pub struct IpcClient { /* private fields */ }Expand description
IPC client for daemon communication
A client becomes poisoned after a timeout or IO error, because the
underlying stream may contain partial data from the failed exchange.
Poisoned clients reject further send() calls with IpcError::ClientPoisoned.
Use send_with_retry for automatic reconnection.
Implementations§
Source§impl IpcClient
impl IpcClient
Sourcepub fn connect(endpoint: &str) -> Result<Self, IpcError>
pub fn connect(endpoint: &str) -> Result<Self, IpcError>
Connect to a daemon at the given endpoint (Unix socket path)
Sourcepub fn connect_with_timeout(
endpoint: &str,
timeout_ms: u64,
) -> Result<Self, IpcError>
pub fn connect_with_timeout( endpoint: &str, timeout_ms: u64, ) -> Result<Self, IpcError>
Connect with a custom timeout
Sourcepub fn timeout_ms(&self) -> u64
pub fn timeout_ms(&self) -> u64
Get the configured timeout in milliseconds
Sourcepub fn send(&mut self, request: &IpcRequest) -> Result<IpcResponse, IpcError>
pub fn send(&mut self, request: &IpcRequest) -> Result<IpcResponse, IpcError>
Send a request and wait for a response
Returns IpcError::ClientPoisoned if this client was poisoned by a
previous timeout or IO error.
Sourcepub fn send_with_retry(
&mut self,
request: &IpcRequest,
max_retries: u32,
) -> Result<IpcResponse, IpcError>
pub fn send_with_retry( &mut self, request: &IpcRequest, max_retries: u32, ) -> Result<IpcResponse, IpcError>
Send a request with retries using exponential backoff
Each retry creates a fresh connection to avoid stale stream state. If reconnection fails, that attempt is consumed but the retry loop continues (with backoff) rather than silently burning all retries.
Auto Trait Implementations§
impl Freeze for IpcClient
impl RefUnwindSafe for IpcClient
impl Send for IpcClient
impl Sync for IpcClient
impl Unpin for IpcClient
impl UnsafeUnpin for IpcClient
impl UnwindSafe for IpcClient
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.