示例#1
0
    def _read(self, limit=4096):
        # See if there's data available to read.
        try:
            r, w, x, = select([self.socket], [], [], TIMEOUT)
        except (TypeError, socket.error):
            self._disconnected()

        if self.socket in r:
            # Receive any available data, update Reader's buffer
            try:
                buf = self.socket.recv(limit)
            except socket.error:
                buf = None

            # Check for end of stream
            if not buf:
                self._disconnected()

            if self.debug:
                self.debug_out(utils.dump_bytes(buf, prefix="    <<  ") + "\n")

            self.reader.data(buf)

        # Process received nodes
        nodes = []

        while True:
            try:
                node, plain = self.reader.read()

                if self.debug:
                    self.debug_out(
                        utils.dump_bytes(plain, prefix="pln <<  ") + "\n")

                if self.debug:
                    self.debug_out(
                        utils.dump_xml(node, prefix="xml <<  ") + "\n")

                nodes.append(node)
            except MessageIncomplete:
                break
            except EndOfStream:
                self._disconnected()
                break

        # Return complete nodes
        return nodes
示例#2
0
    def _read(self, limit=4096):
        # See if there's data available to read.
        try:
            r, w, x, = select([self.socket], [], [], TIMEOUT)
        except (TypeError, socket.error):
            self._disconnected()

        if self.socket in r:
            # Receive any available data, update Reader's buffer
            try:
                buf = self.socket.recv(limit)
            except socket.error:
                buf = None

            # Check for end of stream
            if not buf:
                self._disconnected()

            if self.debug:
                self.debug_out(utils.dump_bytes(buf, prefix="    <<  ") + "\n")

            self.reader.data(buf)

        # Process received nodes
        nodes = []

        while True:
            try:
                node, plain = self.reader.read()

                if self.debug:
                    self.debug_out(
                        utils.dump_bytes(plain, prefix="pln <<  ") + "\n")

                if self.debug:
                    self.debug_out(
                        utils.dump_xml(node, prefix="xml <<  ") + "\n")

                nodes.append(node)
            except MessageIncomplete:
                break
            except EndOfStream:
                self._disconnected()
                break

        # Return complete nodes
        return nodes
示例#3
0
    def _write(self, buf, encrypt=None):
        if isinstance(buf, Node):
            if self.debug:
                self.debug_out(utils.dump_xml(buf, prefix="xml >>  ") + "\n")

            buf, plain = self.writer.node(buf, encrypt)
        else:
            plain = buf

        if self.debug:
            self.debug_out(utils.dump_bytes(plain, prefix="pln >>  ") + "\n")

        if self.debug:
            self.debug_out(utils.dump_bytes(buf, prefix="    >>  ") + "\n")

        try:
            self.socket.sendall(buf)
        except socket.error:
            self._disconnected()
示例#4
0
    def _write(self, buf, encrypt=None):
        if isinstance(buf, Node):
            if self.debug:
                self.debug_out(utils.dump_xml(buf, prefix="xml >>  ") + "\n")

            buf, plain = self.writer.node(buf, encrypt)
        else:
            plain = buf

        if self.debug:
            self.debug_out(utils.dump_bytes(plain, prefix="pln >>  ") + "\n")

        if self.debug:
            self.debug_out(utils.dump_bytes(buf, prefix="    >>  ") + "\n")

        try:
            self.socket.sendall(buf)
        except socket.error:
            self._disconnected()