pub struct DeviceHandler {
pub dyn_param: HashMap<String, String>,
/* private fields */
}Fields§
§dyn_param: HashMap<String, String>Dynamic parameters for input substitution (e.g., passwords, system names)
Implementations§
Source§impl DeviceHandler
impl DeviceHandler
Sourcepub fn is_equivalent(&self, other: &DeviceHandler) -> bool
pub fn is_equivalent(&self, other: &DeviceHandler) -> bool
Checks if two DeviceHandlers are equivalent (used for connection parameter comparison).
Sourcepub fn new<I, S>(
prompt: Vec<(String, I)>,
prompt_with_sys: Vec<(String, S, String)>,
write: Vec<(String, (bool, String, bool), I)>,
more_regex: I,
error_regex: I,
edges: Vec<(String, String, String, bool, bool)>,
ignore_errors: I,
dyn_param: HashMap<String, String>,
) -> Result<DeviceHandler, ConnectError>
pub fn new<I, S>( prompt: Vec<(String, I)>, prompt_with_sys: Vec<(String, S, String)>, write: Vec<(String, (bool, String, bool), I)>, more_regex: I, error_regex: I, edges: Vec<(String, String, String, bool, bool)>, ignore_errors: I, dyn_param: HashMap<String, String>, ) -> Result<DeviceHandler, ConnectError>
Creates a new DeviceHandler with the specified state machine configuration.
§Arguments
prompt- List of (state_name, regex_patterns) for basic promptsprompt_with_sys- List of (state_name, regex_pattern, capture_group) for prompts with system nameswrite- List of (state_name, input_config, regex_patterns) for states requiring inputmore_regex- Regex patterns that match pagination prompts (e.g., “–More–”)error_regex- Regex patterns that match error messagesedges- State transition graph: (from, command, to, is_exit, needs_format)ignore_errors- Regex patterns for errors that should be ignoreddyn_param- Dynamic parameters for command/input substitution
Sourcepub fn read(&mut self, line: &str)
pub fn read(&mut self, line: &str)
Reads a line of output and updates the current state.
This method should be called for each line of output received from the device. It automatically updates the internal state and captures values from prompts when configured to do so.
§Arguments
line- A line of output from the device
Sourcepub fn read_prompt(&mut self, line: &str) -> bool
pub fn read_prompt(&mut self, line: &str) -> bool
Sourcepub fn read_sys_prompt(&mut self, line: &str) -> bool
pub fn read_sys_prompt(&mut self, line: &str) -> bool
Sourcepub fn read_need_write(&mut self, line: &str) -> Option<(String, bool)>
pub fn read_need_write(&mut self, line: &str) -> Option<(String, bool)>
Checks if a line requires input and returns the input to send.
Some device states require automatic input (e.g., password prompts, confirmation). This method checks if the current line triggers such a state and returns the appropriate input.
§Arguments
line- The line to check
§Returns
Some((input, should_record)) if input is required, where:
inputis the string to sendshould_recordindicates whether this input should be included in the output
None if no input is required
Sourcepub fn current_state(&self) -> &str
pub fn current_state(&self) -> &str
Sourcepub fn current_sys(&self) -> Option<&str>
pub fn current_sys(&self) -> Option<&str>
Returns the currently captured system name, if available.
Sourcepub fn current_prompt(&self) -> Option<&str>
pub fn current_prompt(&self) -> Option<&str>
Returns last prompt text matched by the state machine.
Sourcepub fn edges(&self) -> Vec<(String, String, String, bool, bool)>
pub fn edges(&self) -> Vec<(String, String, String, bool, bool)>
Returns all configured transition edges.
Sourcepub fn diagnose_state_machine(&self) -> StateMachineDiagnostics
pub fn diagnose_state_machine(&self) -> StateMachineDiagnostics
Analyze the state transition graph for common template issues.
Sourcepub fn error(&self) -> bool
pub fn error(&self) -> bool
Checks if the current state is an error state.
§Returns
true if the device is currently in an error state, false otherwise
Sourcepub fn trans_state_write(
&self,
state: &str,
sys: Option<&String>,
) -> Result<Vec<(String, String)>, ConnectError>
pub fn trans_state_write( &self, state: &str, sys: Option<&String>, ) -> Result<Vec<(String, String)>, ConnectError>
Calculates the commands needed to transition to a target state.
This method uses breadth-first search (BFS) to find the shortest path from
the current state to the target state in the state transition graph.
§Arguments
state- The target state namesys- Optional system name for state-specific transitions
§Returns
A vector of (command, target_state) pairs representing the path to take, or an error if the target state is unreachable.
§Errors
Returns ConnectError::UnreachableState if there’s no path to the target state.