Module m.listener
Listener implementation where listeners are added as either urls or functions and notified when any or specific messages are received
Usage:
-- a.script local listener = require "ludobits.m.listener" local l = listener.create() local function handler1(message_id, message) print(message_id) end local function handler2(message_id, message) print(message_id) end -- add listener function handler1 and listen to all messages l.add(handler1) -- add listener function handler2 and only listen to "mymessage1" and "mymessage2" l.add(handler2, "mymessage1") l.add(handler2, "mymessage2") -- add listener url "#myscript1" and listen to all messages l.add(msg.url("#myscript1")) -- add listener url "#myscript2" and only listen to "mymessage1" and "mymessage2" l.add(msg.url("#myscript2"), "mymessage1") l.add(msg.url("#myscript2"), "mymessage2") -- trigger some messages l.trigger(hash("mymessage1"), { text = "lorem ipsum" }) l.trigger(hash("mymessage2"), { text = "lorem ipsum" }) l.trigger(hash("mymessage3"), { text = "lorem ipsum" }) l.trigger(hash("foobar"), { foo = "bar" }) -- myscript1.script function on_message(self, mesage_id, message, sender) print(message_id) end -- myscript2.script function on_message(self, mesage_id, message, sender) print(message_id) end
Functions
create () | Create a listener instance |
instance.add (url_or_fn_to_add, message_id) | Add a function or url to invoke when the listener is triggered |
instance.remove (url_or_fn_to_remove, message_id) | Remove a previously added callback function or url |
instance.trigger (message_id, message) | Trigger this listener |
Functions
- create ()
-
Create a listener instance
Returns:
-
Listener
- instance.add (url_or_fn_to_add, message_id)
-
Add a function or url to invoke when the listener is triggered
Parameters:
- url_or_fn_to_add URL or function to call. Can be nil in which case the current URL is used.
- message_id Optional message id to filter on
- instance.remove (url_or_fn_to_remove, message_id)
-
Remove a previously added callback function or url
Parameters:
- url_or_fn_to_remove
- message_id Optional message_id to limit removal to
- instance.trigger (message_id, message)
-
Trigger this listener
Parameters:
- message_id Id of message to trigger
- message The message itself (can be nil)