def _handle(
         self,
         conn_lru_dict: LRUCacheType[multiprocessing_connection.Connection,
                                     bool],
         conn: multiprocessing_connection.Connection,
         c_send: multiprocessing_connection.Connection):
     try:
         data = conn.recv_bytes()
         if not data:
             raise EOFError
         self.logger.debug("parse conn %s" % conn)
         # self.logger.debug(data)
         try:
             result = self.handle(data)
             if result is not None:
                 conn.send_bytes(result)
         except Exception:
             self.logger.exception("handle error")
         conn_lru_dict[conn] = True
         c_send.send_bytes(b'ok')
     except OSError:
         self.logger.debug("conn %s was closed" % conn)
         conn.close()
     except EOFError:
         self.logger.debug("conn %s was eof" % conn)
         conn.close()
     except BrokenPipeError:
         self.logger.debug("conn %s was broken" % conn)
         conn.close()
 def _handle(self, conn_lru_dict: LRUCacheType[multiprocessing_connection.Connection, bool],
             conn: multiprocessing_connection.Connection, c_send: multiprocessing_connection.Connection):
     try:
         data = conn.recv_bytes()
         if not data:
             raise EOFError
         self.logger.debug("parse conn %s" % conn)
         # self.logger.debug(data)
         try:
             result = self.handle(data)
             if result is not None:
                 conn.send_bytes(result)
         except Exception:
             self.logger.exception("handle error")
         conn_lru_dict[conn] = True
         c_send.send_bytes(b'ok')
     except OSError:
         self.logger.debug("conn %s was closed" % conn)
         conn.close()
     except EOFError:
         self.logger.debug("conn %s was eof" % conn)
         conn.close()
     except BrokenPipeError:
         self.logger.debug("conn %s was broken" % conn)
         conn.close()
Beispiel #3
0
 def _solver_worker_process(
         cls,
         solver_worker_args: SolverWorkerArgs,
         comms_connection: Connection,
         # pyre-ignore
         cleanup_flag: multiprocessing.Event,  # noqa T484 (this does exist)
 ) -> None:
     try:
         for result in cls._run_solver_worker(solver_worker_args):
             # We do our own pickling here to ensure that we use the v4
             # pickle protocol for proper large-object support:
             # https://www.python.org/dev/peps/pep-3154/
             comms_connection.send_bytes(
                 pickle.dumps(result, protocol=pickle.HIGHEST_PROTOCOL))
         # `None` is a placeholder to signal that a worker has cleanly finished
         comms_connection.send(None)
     except Exception as e:
         logger.error(str(e))
         for l in traceback.format_exc().splitlines(False):
             logger.error(l)
         comms_connection.send(e)
         raise
     finally:
         # We need to wait to clean up to make sure the communication pipes
         # are fully processed/cleared.
         cleanup_flag.wait()  # noqa T484
Beispiel #4
0
    class RawSocketHandler(socketserver.BaseRequestHandler):
        def setup(self):
            registry.append(self)

        def handle(self):
            self.conn = Connection(self.request.detach())
            while self.conn._handle:
                try:
                    obj = json.loads(self.conn.recv_bytes().decode('utf-8'))
                except EOFError:
                    break
                if obj['type'] == 'message':
                    bus.post(nt_from_dict(Message, obj['message'], None))
                    self.conn.send_bytes(json.dumps({'ret': True}).encode('utf-8'))
                elif obj['type'] == 'request':
                    m = bus.post_sync(nt_from_dict(Message, obj['message'], None))
                    if m:
                        ret = {"ret": True, "response": m._asdict()}
                    else:
                        ret = {"ret": False, "response": None}
                    self.conn.send_bytes(json.dumps(ret).encode('utf-8'))

        def send(self, msg):
            if isinstance(msg, Message):
                ret = {"type": "message", "message": msg._asdict()}
            else:
                ret = {"type": "response", "response": msg._asdict()}
            self.conn.send_bytes(json.dumps(ret).encode('utf-8'))

        def finish(self):
            registry.remove(self)

        def close(self):
            self.conn.close()
Beispiel #5
0
    class RawSocketHandler(socketserver.BaseRequestHandler):
        def setup(self):
            registry.append(self)

        def handle(self):
            self.conn = Connection(self.request.detach())
            while self.conn._handle:
                try:
                    obj = json.loads(self.conn.recv_bytes().decode('utf-8'))
                except EOFError:
                    break
                if obj['type'] == 'message':
                    bus.post(nt_from_dict(Message, obj['message'], None))
                    self.conn.send_bytes(
                        json.dumps({
                            'ret': True
                        }).encode('utf-8'))
                elif obj['type'] == 'request':
                    m = bus.post_sync(
                        nt_from_dict(Message, obj['message'], None))
                    if m:
                        ret = {"ret": True, "response": m._asdict()}
                    else:
                        ret = {"ret": False, "response": None}
                    self.conn.send_bytes(json.dumps(ret).encode('utf-8'))

        def send(self, msg):
            if isinstance(msg, Message):
                ret = {"type": "message", "message": msg._asdict()}
            else:
                ret = {"type": "response", "response": msg._asdict()}
            self.conn.send_bytes(json.dumps(ret).encode('utf-8'))

        def finish(self):
            registry.remove(self)

        def close(self):
            self.conn.close()
Beispiel #6
0
 def receive_sync(cls, data_conn: Connection):
     data_conn.send_bytes(rtlsdr.read_sync())
Beispiel #7
0
 def receive_sync(cls, data_conn: Connection):
     if cls.pyaudio_stream:
         data_conn.send_bytes(cls.pyaudio_stream.read(cls.CHUNK_SIZE))
Beispiel #8
0
 def receive_sync(cls, data_conn: Connection):
     data_conn.send_bytes(rtlsdr.read_sync())
Beispiel #9
0
 def enter_async_receive_mode(cls, data_connection: Connection,
                              ctrl_connection: Connection):
     ret = hackrf.start_rx_mode(data_connection.send_bytes)
     ctrl_connection.send_bytes("Start RX MODE:", str(ret))
Beispiel #10
0
 def receive_sync(cls, data_conn: Connection):
     if cls.pyaudio_stream:
         data_conn.send_bytes(cls.pyaudio_stream.read(cls.CHUNK_SIZE))
def ConnSendBytes(connection:Connection, msg:bytearray):
	connection.send_bytes(msg)
def ConnSendStr(connection:Connection, msg:str):
	connection.send_bytes(msg.encode())
Beispiel #13
0
 def receive_sync(cls, data_conn: Connection):
     if cls.pyaudio_stream:
         data_conn.send_bytes(cls.pyaudio_stream.read(cls.CHUNK_SIZE, exception_on_overflow=False))
Beispiel #14
0
 def receive_sync(cls, data_conn: Connection):
     if cls.pyaudio_stream:
         data_conn.send_bytes(
             cls.pyaudio_stream.read(cls.CHUNK_SIZE,
                                     exception_on_overflow=False))