aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2019-06-06 17:58:35 +0100
committerGravatar jesopo2019-06-06 17:58:35 +0100
commitf96378ac07f1ce809c518ac30443d8afd9935063 (patch)
tree6d86c19be49fcb3c19c111a1f128eb5340f4ca9b /src
parentSend +draft/typing before processing command. WIP (diff)
signature
move immediate-write-trigger to IRCServer.py, trigger _event_loop for
running=False
Diffstat (limited to 'src')
-rw-r--r--src/IRCBot.py11
-rw-r--r--src/IRCServer.py4
2 files changed, 12 insertions, 3 deletions
diff --git a/src/IRCBot.py b/src/IRCBot.py
index 3d638fe1..293a76d5 100644
--- a/src/IRCBot.py
+++ b/src/IRCBot.py
@@ -46,8 +46,12 @@ class Bot(object):
self._trigger_functions = []
self._events.on("timer.reconnect").hook(self._timed_reconnect)
- def _thread_trigger(self):
+ def _trigger_both(self):
+ self.trigger_read()
+ self.trigger_write()
+ def trigger_read(self):
self._rtrigger_client.send(b"TRIGGER")
+ def trigger_write(self):
self._wtrigger_client.send(b"TRIGGER")
def trigger(self,
@@ -57,7 +61,7 @@ class Bot(object):
if utils.is_main_thread():
returned = func()
- self._thread_trigger()
+ self._trigger_both()
return returned
func_queue = queue.Queue(1) # type: queue.Queue[str]
@@ -74,7 +78,7 @@ class Bot(object):
type, returned = func_queue.get(block=True)
- self._thread_trigger()
+ self._trigger_both()
if type == TriggerResult.Exception:
raise returned
@@ -262,6 +266,7 @@ class Bot(object):
while self.running:
if not self.servers:
self.running = False
+ self._event_queue.put(lambda: None)
break
events = self._read_poll.poll(self.get_poll_timeout())
diff --git a/src/IRCServer.py b/src/IRCServer.py
index e037eca7..1f2a5b3b 100644
--- a/src/IRCServer.py
+++ b/src/IRCServer.py
@@ -255,6 +255,10 @@ class Server(IRCObject.Object):
line_obj = IRCLine.SentLine(line_events, datetime.datetime.utcnow(),
self.hostmask(), line_parsed)
self.socket.send(line_obj, immediate=immediate)
+
+ if immediate:
+ self.bot.trigger_write()
+
return line_obj
def send_raw(self, line: str):
return self.send(utils.irc.parse_line(line))