def recv(self, number_of_bytes=4096): """Receive bytes from the IRC server.""" try: new_data = self.sock.recv(number_of_bytes).decode( 'utf-8', 'replace') except socket.timeout as ex: error = ex.args[0] if error == 'timed out': return [] else: raise ex self._new_data += new_data raw_messages = [] message_buffer = '' for char in self._new_data: if char in ('\r', '\n'): if len(message_buffer): print(' ->', message_buffer) raw_messages.append(message_buffer) message_buffer = '' continue message_buffer += char # convert to actual rfc1459 messages messages = [] for msg in raw_messages: messages.append(RFC1459Message.from_message(msg)) return messages
def recv(self, number_of_bytes=4096): """Receive bytes from the IRC server.""" try: new_data = self.sock.recv(number_of_bytes).decode('utf-8', 'replace') except socket.timeout as ex: error = ex.args[0] if error == 'timed out': return [] else: raise ex self._new_data += new_data raw_messages = [] message_buffer = '' for char in self._new_data: if char in ('\r', '\n'): if len(message_buffer): print(' ->', message_buffer) raw_messages.append(message_buffer) message_buffer = '' continue message_buffer += char # convert to actual rfc1459 messages messages = [] for msg in raw_messages: messages.append(RFC1459Message.from_message(msg)) return messages
def message_received(self, data): data = data.decode('UTF-8', 'replace').strip('\r\n') linelen = self.ctx.conf.limits.get('line', None) if linelen and len(data) > linelen: data = data[:linelen] m = RFC1459Message.from_message(data) m.client = self # logging.debug('client {0} --> {1}'.format(repr(self.__dict__), repr(m.serialize()))) if len(self.recvq) > self.ctx.conf.recvq_len: self.quit('Excess flood') return self.recvq.append(m) # XXX - drain_queue should be called on all objects at once to enforce recvq limits self.drain_queue()
def data_received(self, data): m = RFC1459Message.from_message(data.decode('UTF-8', 'replace').strip('\r\n')) m.client = self em.dispatch(*m.to_event()) self.transport.write(bytes(m.to_message() + '\r\n', 'UTF-8'))