Final batch of pty driver fixes... For now.
This commit is contained in:
@ -30,6 +30,7 @@ class PTYConstants:
|
|||||||
# Timeouts (in seconds)
|
# Timeouts (in seconds)
|
||||||
DEFAULT_READ_TIMEOUT = 0.3
|
DEFAULT_READ_TIMEOUT = 0.3
|
||||||
INPUT_READ_TIMEOUT = 0.01
|
INPUT_READ_TIMEOUT = 0.01
|
||||||
|
OUTPUT_READ_TIMEOUT = 0.05 # Faster than default but allows for network lag
|
||||||
SELECT_TIMEOUT = 0.05
|
SELECT_TIMEOUT = 0.05
|
||||||
PROCESS_TERMINATION_TIMEOUT = 3.0
|
PROCESS_TERMINATION_TIMEOUT = 3.0
|
||||||
PROCESS_KILL_DELAY = 0.5
|
PROCESS_KILL_DELAY = 0.5
|
||||||
@ -211,6 +212,9 @@ class driver(screenDriver):
|
|||||||
'input_timeout': float(settings_manager.get_setting(
|
'input_timeout': float(settings_manager.get_setting(
|
||||||
'screen', 'ptyInputTimeout', PTYConstants.INPUT_READ_TIMEOUT
|
'screen', 'ptyInputTimeout', PTYConstants.INPUT_READ_TIMEOUT
|
||||||
)),
|
)),
|
||||||
|
'output_timeout': float(settings_manager.get_setting(
|
||||||
|
'screen', 'ptyOutputTimeout', PTYConstants.OUTPUT_READ_TIMEOUT
|
||||||
|
)),
|
||||||
'select_timeout': float(settings_manager.get_setting(
|
'select_timeout': float(settings_manager.get_setting(
|
||||||
'screen', 'ptySelectTimeout', PTYConstants.SELECT_TIMEOUT
|
'screen', 'ptySelectTimeout', PTYConstants.SELECT_TIMEOUT
|
||||||
)),
|
)),
|
||||||
@ -235,6 +239,7 @@ class driver(screenDriver):
|
|||||||
)
|
)
|
||||||
self.pty_config = {
|
self.pty_config = {
|
||||||
'input_timeout': PTYConstants.INPUT_READ_TIMEOUT,
|
'input_timeout': PTYConstants.INPUT_READ_TIMEOUT,
|
||||||
|
'output_timeout': PTYConstants.OUTPUT_READ_TIMEOUT,
|
||||||
'select_timeout': PTYConstants.SELECT_TIMEOUT,
|
'select_timeout': PTYConstants.SELECT_TIMEOUT,
|
||||||
'process_termination_timeout': PTYConstants.PROCESS_TERMINATION_TIMEOUT,
|
'process_termination_timeout': PTYConstants.PROCESS_TERMINATION_TIMEOUT,
|
||||||
'poll_interval': PTYConstants.MIN_POLL_INTERVAL
|
'poll_interval': PTYConstants.MIN_POLL_INTERVAL
|
||||||
@ -427,7 +432,9 @@ class driver(screenDriver):
|
|||||||
if self.p_out in r:
|
if self.p_out in r:
|
||||||
try:
|
try:
|
||||||
msg_bytes = self.read_all(
|
msg_bytes = self.read_all(
|
||||||
self.p_out.fileno(), interruptFd=sys.stdin.fileno()
|
self.p_out.fileno(),
|
||||||
|
timeout=self.pty_config.get('output_timeout', PTYConstants.OUTPUT_READ_TIMEOUT),
|
||||||
|
interruptFd=sys.stdin.fileno()
|
||||||
)
|
)
|
||||||
except (EOFError, OSError):
|
except (EOFError, OSError):
|
||||||
event_queue.put(
|
event_queue.put(
|
||||||
|
Reference in New Issue
Block a user