Round and pubsub lib.
This commit is contained in:
34
examples/resources/lib/pubsub.lua
Normal file
34
examples/resources/lib/pubsub.lua
Normal file
@@ -0,0 +1,34 @@
|
||||
local PubSub = {}
|
||||
PubSub.__index = PubSub
|
||||
|
||||
function PubSub:new()
|
||||
local object = setmetatable( {}, self )
|
||||
|
||||
object.signals = {}
|
||||
|
||||
return object
|
||||
end
|
||||
|
||||
function PubSub:add( name )
|
||||
self.signals[ name ] = {}
|
||||
end
|
||||
|
||||
function PubSub:subscribe( name, func )
|
||||
table.insert( self.signals[ name ], func )
|
||||
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 )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PubSub:publish( name, ... )
|
||||
for _, func in ipairs( self.signals[ name ] ) do
|
||||
func( ... )
|
||||
end
|
||||
end
|
||||
|
||||
return PubSub
|
||||
Reference in New Issue
Block a user