コード例 #1
0
    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
コード例 #2
0
ファイル: users.py プロジェクト: linostar/vagrirc
    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
コード例 #3
0
    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()
コード例 #4
0
ファイル: client.py プロジェクト: miniCruzer/mammon
    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()
コード例 #5
0
ファイル: example.py プロジェクト: DanielOaks/ircreactor
 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'))