More fixes to pty reading.

This commit is contained in:
Storm Dragon
2026-05-08 19:58:42 -04:00
parent 3c61b6629a
commit 90efad362b
9 changed files with 173 additions and 16 deletions
@@ -207,23 +207,27 @@ class driver(screenDriver):
try:
settings_manager = self.env["runtime"]["SettingsManager"]
# Load timeout settings with defaults
self.pty_config = {
'input_timeout': float(settings_manager.get_setting(
'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(
'screen', 'ptySelectTimeout', PTYConstants.SELECT_TIMEOUT
)),
'process_termination_timeout': float(settings_manager.get_setting(
'screen', 'ptyProcessTimeout', PTYConstants.PROCESS_TERMINATION_TIMEOUT
)),
'poll_interval': float(settings_manager.get_setting(
'screen', 'ptyPollInterval', PTYConstants.MIN_POLL_INTERVAL
))
'input_timeout': self._get_optional_float_setting(
settings_manager, 'screen', 'ptyInputTimeout',
PTYConstants.INPUT_READ_TIMEOUT
),
'output_timeout': self._get_optional_float_setting(
settings_manager, 'screen', 'ptyOutputTimeout',
PTYConstants.OUTPUT_READ_TIMEOUT
),
'select_timeout': self._get_optional_float_setting(
settings_manager, 'screen', 'ptySelectTimeout',
PTYConstants.SELECT_TIMEOUT
),
'process_termination_timeout': self._get_optional_float_setting(
settings_manager, 'screen', 'ptyProcessTimeout',
PTYConstants.PROCESS_TERMINATION_TIMEOUT
),
'poll_interval': self._get_optional_float_setting(
settings_manager, 'screen', 'ptyPollInterval',
PTYConstants.MIN_POLL_INTERVAL
)
}
self.env["runtime"]["DebugManager"].write_debug_out(
@@ -245,6 +249,17 @@ class driver(screenDriver):
'poll_interval': PTYConstants.MIN_POLL_INTERVAL
}
def _get_optional_float_setting(
self, settings_manager, section, setting, default
):
try:
value = settings_manager.get_setting(section, setting)
if value == "":
return default
return float(value)
except Exception:
return default
def initialize(self, environment):
self.env = environment
self.command = self.env["runtime"]["SettingsManager"].get_setting(