コード例 #1
0
 def connect(self):
     """Rewrite of KQMLModule connect, only handles send_socket and output
     connections"""
     try:
         self.send_socket = socket()
         self.send_socket.connect((self.host, self.port))
         socket_write = SocketIO(self.send_socket, 'w')
         self.out = BufferedWriter(socket_write)
     except OSError as error_msg:
         LOGGER.error('Connection failed: %s', error_msg)
     # Verify that you can send messages...
     assert self.out is not None, \
         'Connection formed but output (%s) not set.' % (self.out)
コード例 #2
0
    def listen(self):
        """Socket server, listens for new KQML messages and dispatches them
        accordingly.

        Doesn't necessarily need threading; Could just start dispatcher and
        after it returns accept next connection. This couldn't handle loads of
        inputs while being bogged down processing. To avoid this issue we
        thread the dispatching so the functions that get called are run in a
        separate Thread. We're using ThreadPoolExecutor because sockets use io,
        io is blocking and threads allow you to not block.
        """
        with ThreadPoolExecutor(max_workers=5) as executor:
            while self.ready:
                connection, _ = self.listen_socket.accept()
                LOGGER.debug('Received connection: %s', connection)
                socket_write = SocketIO(connection, 'w')
                self.local_out = BufferedWriter(socket_write)
                socket_read = SocketIO(connection, 'r')
                read_input = KQMLReader(BufferedReader(socket_read))
                self.dispatcher = KQMLDispatcher(self, read_input, self.name)
                LOGGER.debug('Starting dispatcher: %s', self.dispatcher)
                executor.submit(self.dispatcher.start)
                self.state = 'dispatching'
コード例 #3
0
ファイル: makefile.py プロジェクト: westurner/requests3
def backport_makefile(self,
                      mode="r",
                      buffering=None,
                      encoding=None,
                      errors=None,
                      newline=None):
    """
    Backport of ``socket.makefile`` from Python 3.5.
    """
    if not set(mode) <= set(["r", "w", "b"]):
        raise ValueError("invalid mode %r (only r, w, b allowed)" % (mode, ))

    writing = "w" in mode
    reading = "r" in mode or not writing
    assert reading or writing
    binary = "b" in mode
    rawmode = ""
    if reading:
        rawmode += "r"
    if writing:
        rawmode += "w"
    raw = SocketIO(self, rawmode)
    self._makefile_refs += 1
    if buffering is None:
        buffering = -1
    if buffering < 0:
        buffering = io.DEFAULT_BUFFER_SIZE
    if buffering == 0:
        if not binary:
            raise ValueError("unbuffered streams must be binary")

        return raw

    if reading and writing:
        buffer = io.BufferedRWPair(raw, raw, buffering)
    elif reading:
        buffer = io.BufferedReader(raw, buffering)
    else:
        assert writing
        buffer = io.BufferedWriter(raw, buffering)
    if binary:
        return buffer

    text = io.TextIOWrapper(buffer, encoding, errors, newline)
    text.mode = mode
    return text
コード例 #4
0
        raise ValueError("invalid mode %r (only r, w, b allowed)" % (mode,))
=======
        raise ValueError(
            "invalid mode %r (only r, w, b allowed)" % (mode,)
        )
>>>>>>> 71358189c5e72ee2ac9883b408a2f540a7f5745e
    writing = "w" in mode
    reading = "r" in mode or not writing
    assert reading or writing
    binary = "b" in mode
    rawmode = ""
    if reading:
        rawmode += "r"
    if writing:
        rawmode += "w"
    raw = SocketIO(self, rawmode)
    self._makefile_refs += 1
    if buffering is None:
        buffering = -1
    if buffering < 0:
        buffering = io.DEFAULT_BUFFER_SIZE
    if buffering == 0:
        if not binary:
            raise ValueError("unbuffered streams must be binary")
        return raw
    if reading and writing:
        buffer = io.BufferedRWPair(raw, raw, buffering)
    elif reading:
        buffer = io.BufferedReader(raw, buffering)
    else:
        assert writing
コード例 #5
0
ファイル: fileobject.py プロジェクト: PlumpMath/guv
 def makefile(self, *args, **kwargs):
     return SocketIO(self, *args, **kwargs)