aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-06-22 22:22:50 +0100
committerGravatar jesopo2019-06-22 22:22:50 +0100
commit29f5b7caf296e531b9fb97f98ca1d25df522f382 (patch)
treec0d1e08f6ecb95a00d5e6db0bdb31a509c064d16 /modules
parentFix more instances of event["args"] (now event["line"].args) (diff)
signature
add deferred_read.py, to defer parsing of *some* lines until after 001
Diffstat (limited to 'modules')
-rw-r--r--modules/deferred_read.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/modules/deferred_read.py b/modules/deferred_read.py
new file mode 100644
index 00000000..c891e860
--- /dev/null
+++ b/modules/deferred_read.py
@@ -0,0 +1,23 @@
+from src import EventManager, ModuleManager, utils
+
+# postpone parsing SOME lines until after 001
+
+class Module(ModuleManager.BaseModule):
+ @utils.hook("new.server")
+ def new_server(self, event):
+ event["server"]._deferred_read = []
+
+ @utils.hook("raw.received.001", priority=EventManager.PRIORITY_LOW)
+ def on_001(self, event):
+ lines = event["server"]._deferred_read[:]
+ event["server"]._deferred_read.clear()
+ for line in lines:
+ self.events.on("raw.received").call(line=line,
+ server=event["server"])
+
+ @utils.hook("raw.received.mode", priority=EventManager.PRIORITY_HIGH)
+ def defer(self, event):
+ if not event["server"].connected:
+ event.eat()
+ event["server"]._deferred_read.append(event["line"])
+