def run(self):
try:
while not self._should_stop:
readable, _, _ = select.select(self._inputs, [], [], 1)
if self._hci_socket in readable:
source = 'socket'
packet = self._hci_socket.recv(4096)
self._logger.debug('SOCKET: %s', RawCopy(HciPacket).parse(packet))
self.handle_packet(packet, source)
if self._pty_fd in readable:
data = os.read(self._pty_master, 4096)
self._logger.debug('Raw PTY data: %s', repr(data))
self._pty_buffer.write(data)
self._pty_buffer.seek(-len(data), SEEK_CUR)
source = 'pty'
while True:
if self._pty_buffer.pos == self._pty_buffer.len:
break
parsed_packet = RawCopy(HciPacket).parse_stream(self._pty_buffer)
if not parsed_packet:
break
self._logger.debug('PTY: %s', parsed_packet)
packet = parsed_packet.data
self.handle_packet(packet, source)
except KeyboardInterrupt:
log.info("Received SIGTERM, exiting")
评论列表
文章目录