pub struct GetConfResponse {
pub entries: HashMap<String, Vec<String>>,
}Expand description
Parsed response from the GETCONF command.
Contains a mapping of configuration option names to their values. Options can have zero, one, or multiple values.
§Value Semantics
- Empty Vec: Option is unset or using default value
- Single element: Option has one value
- Multiple elements: Option has multiple values (e.g., ExitPolicy)
§Example
use stem_rs::response::{ControlMessage, GetConfResponse};
let msg = ControlMessage::from_str(
"250-ControlPort=9051\r\n\
250-DirPort\r\n\
250 OK\r\n",
None,
false
).unwrap();
let response = GetConfResponse::from_message(&msg).unwrap();
// ControlPort has a value
assert_eq!(
response.entries.get("ControlPort"),
Some(&vec!["9051".to_string()])
);
// DirPort is unset (empty Vec)
assert_eq!(response.entries.get("DirPort"), Some(&vec![]));Fields§
§entries: HashMap<String, Vec<String>>Mapping of configuration option names to their values.
Each key is a configuration option name (e.g., “ControlPort”). Each value is a Vec of strings:
- Empty Vec: option is unset
- Single element: option has one value
- Multiple elements: option has multiple values
Implementations§
Source§impl GetConfResponse
impl GetConfResponse
Sourcepub fn from_message(message: &ControlMessage) -> Result<Self, Error>
pub fn from_message(message: &ControlMessage) -> Result<Self, Error>
Parses a GETCONF response from a control message.
Extracts configuration option names and their values from the response.
§Arguments
message- The control message to parse
§Errors
Returns an error if:
Error::InvalidArguments: One or more requested configuration options were not recognized by TorError::Protocol: The response had a non-OK status code for other reasons
§Example
use stem_rs::response::{ControlMessage, GetConfResponse};
// Successful response
let msg = ControlMessage::from_str(
"250-SocksPort=9050\r\n250 OK\r\n",
None,
false
).unwrap();
let response = GetConfResponse::from_message(&msg).unwrap();
assert_eq!(
response.entries.get("SocksPort"),
Some(&vec!["9050".to_string()])
);
// Empty response (no options requested)
let msg = ControlMessage::from_str("250 OK\r\n", None, false).unwrap();
let response = GetConfResponse::from_message(&msg).unwrap();
assert!(response.entries.is_empty());Trait Implementations§
Source§impl Clone for GetConfResponse
impl Clone for GetConfResponse
Source§fn clone(&self) -> GetConfResponse
fn clone(&self) -> GetConfResponse
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for GetConfResponse
impl RefUnwindSafe for GetConfResponse
impl Send for GetConfResponse
impl Sync for GetConfResponse
impl Unpin for GetConfResponse
impl UnwindSafe for GetConfResponse
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more