diff options
Diffstat (limited to 'examples/resources/lib/pubsub.lua')
| -rw-r--r-- | examples/resources/lib/pubsub.lua | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/examples/resources/lib/pubsub.lua b/examples/resources/lib/pubsub.lua index 2847d92..47d9a63 100644 --- a/examples/resources/lib/pubsub.lua +++ b/examples/resources/lib/pubsub.lua @@ -13,21 +13,33 @@ function PubSub:add( name ) self.signals[ name ] = {} end +function PubSub:remove( name ) + if self.signals[ name ] ~= nil then + table.remove( self.signals, name ) + end +end + function PubSub:subscribe( name, func ) - table.insert( self.signals[ name ], func ) + if self.signals[ name ] ~= nil then + table.insert( self.signals[ name ], func ) + end end function PubSub:unSubscribe( name, uFunc ) - for i, func in ipairs( self.signals[ name ] ) do - if func == uFunc then - table.remove( self.signals[ name ], i ) + if self.signals[ name ] ~= nil then + for i, func in ipairs( self.signals[ name ] ) do + if func == uFunc then + table.remove( self.signals[ name ], i ) + end end end end function PubSub:publish( name, ... ) - for _, func in ipairs( self.signals[ name ] ) do - func( ... ) + if self.signals[ name ] ~= nil then + for _, func in ipairs( self.signals[ name ] ) do + func( ... ) + end end end |
