summaryrefslogtreecommitdiff
path: root/examples/resources/lib/pubsub.lua
diff options
context:
space:
mode:
authorjussi2024-03-17 10:38:30 +0200
committerjussi2024-03-17 10:38:30 +0200
commitae1d0b65f16b24f2e0db39cb8baef4af57b2a12f (patch)
tree80358810635da19821bdb38ece2098c2dd48f1ff /examples/resources/lib/pubsub.lua
parentca238975dc63d2dddcd2b17ad627bedc95dd158c (diff)
downloadreilua-enhanced-ae1d0b65f16b24f2e0db39cb8baef4af57b2a12f.tar.gz
reilua-enhanced-ae1d0b65f16b24f2e0db39cb8baef4af57b2a12f.tar.bz2
reilua-enhanced-ae1d0b65f16b24f2e0db39cb8baef4af57b2a12f.zip
Round and pubsub lib.
Diffstat (limited to 'examples/resources/lib/pubsub.lua')
-rw-r--r--examples/resources/lib/pubsub.lua34
1 files changed, 34 insertions, 0 deletions
diff --git a/examples/resources/lib/pubsub.lua b/examples/resources/lib/pubsub.lua
new file mode 100644
index 0000000..2847d92
--- /dev/null
+++ b/examples/resources/lib/pubsub.lua
@@ -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