Extract POLL and POLL_ACK from main controller loop

This commit is contained in:
Andrew Kay
2019-06-28 07:02:14 -05:00
parent 9a7e26ea68
commit 2b5c8ce9ea

View File

@@ -43,7 +43,7 @@ class Controller:
last_poll_time = self._poll_delay(last_poll_time, last_poll_response)
try:
poll_response = poll(self.interface, timeout=1)
poll_response = self._poll()
except ReceiveTimeout:
if self.terminal:
self._handle_terminal_detached()
@@ -56,14 +56,6 @@ class Controller:
self.logger.warning(f'POLL protocol error: {error}', exc_info=error)
continue
if poll_response:
try:
poll_ack(self.interface)
except ReceiveError as error:
self.logger.warning(f'POLL_ACK receive error: {error}', exc_info=error)
except ProtocolError as error:
self.logger.warning(f'POLL_ACK protocol error: {error}', exc_info=error)
if not self.terminal:
self._handle_terminal_attached(poll_response)
@@ -142,6 +134,19 @@ class Controller:
if self.session:
self.session.handle_key(key, modifiers, scan_code)
def _poll(self):
poll_response = poll(self.interface, timeout=1)
if poll_response:
try:
poll_ack(self.interface)
except ReceiveError as error:
self.logger.warning(f'POLL_ACK receive error: {error}', exc_info=error)
except ProtocolError as error:
self.logger.warning(f'POLL_ACK protocol error: {error}', exc_info=error)
return poll_response
def _poll_delay(self, last_poll_time, last_poll_response):
if last_poll_response is None and last_poll_time is not None:
if self.terminal: