diff options
Diffstat (limited to 'src/IRCServer.py')
| -rw-r--r-- | src/IRCServer.py | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/src/IRCServer.py b/src/IRCServer.py index a8bd12ea..bece7609 100644 --- a/src/IRCServer.py +++ b/src/IRCServer.py @@ -207,14 +207,12 @@ class Server(IRCObject.Object): return utils.irc.hostmask_match(self.irc_lower(hostmask), self.irc_lower(pattern)) - def parse_data(self, line: str): - if not line: - return - - self.bot.log.debug("%s (raw recv) | %s", [str(self), line]) - self.events.on("raw.received").call_unsafe(server=self, - line=utils.irc.parse_line(line)) - self.check_users() + def _post_read(self, lines: typing.List[str]): + for line in lines: + self.bot.log.debug("%s (raw recv) | %s", [str(self), line]) + self.events.on("raw.received").call_unsafe(server=self, + line=utils.irc.parse_line(line)) + self.check_users() def check_users(self): for user in self.new_users: if not len(user.channels): @@ -242,6 +240,18 @@ class Server(IRCObject.Object): return lines + def _send(self) -> typing.List[IRCLine.SentLine]: + lines = self.socket._send() + for line in lines: + self.bot.log.debug("%s (raw send) | %s", [ + str(self), line.parsed_line.format()]) + return lines + def _post_send(self, lines: typing.List[IRCLine.SentLine]): + for line in lines: + line.events.on("send").call() + self.events.on("raw.send").call_unsafe(server=self, + line=line.parsed_line) + def send(self, line_parsed: IRCLine.ParsedLine, immediate: bool=False): if not self.send_enabled: return None @@ -257,18 +267,14 @@ 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)) - def _send(self): - lines = self.socket._send() - for line in lines: - self.bot.log.debug("%s (raw send) | %s", [ - str(self), line.parsed_line.format()]) - self.events.on("raw.send").call_unsafe(server=self, - line=line.parsed_line) - def send_user(self, username: str, realname: str) -> IRCLine.SentLine: return self.send(utils.irc.protocol.user(username, realname)) def send_nick(self, nickname: str) -> IRCLine.SentLine: |
