Skip to main content

ReconnectingClient

Struct ReconnectingClient 

Source
pub struct ReconnectingClient { /* private fields */ }
Expand description

A wrapper around SeedLinkClient that automatically reconnects on disconnect.

Records all subscription steps (STATION, SELECT, DATA, TIME) and replays them on reconnect. On resume, replaces DATA with DATA-from-sequence using the last tracked sequence numbers.

§Deduplication guarantee

SeedLink servers may resend the last frame at the requested sequence number when resuming with DATA seq. This client automatically deduplicates frames after reconnect: any frame whose sequence number is ≤ the last tracked sequence for its station is silently dropped. Downstream consumers are guaranteed to never see duplicate frames.

Implementations§

Source§

impl ReconnectingClient

Source

pub async fn connect(addr: &str) -> Result<Self>

Connect to a SeedLink server with reconnect support using default configs.

Source

pub async fn connect_with_config( addr: &str, config: ClientConfig, reconnect: ReconnectConfig, ) -> Result<Self>

Connect with custom client and reconnect configuration.

Source

pub async fn station(&mut self, station: &str, network: &str) -> Result<()>

Select a station and network. Records the step for reconnect replay.

Source

pub async fn select(&mut self, pattern: &str) -> Result<()>

Select channels. Records the step for reconnect replay.

Source

pub async fn data(&mut self) -> Result<()>

Arm with DATA. Records the step for reconnect replay.

Source

pub async fn data_from(&mut self, sequence: SequenceNumber) -> Result<()>

Arm with DATA from a specific sequence. Records the step for reconnect replay.

Source

pub async fn time_window( &mut self, start: &str, end: Option<&str>, ) -> Result<()>

Arm with TIME window. Records the step for reconnect replay.

Source

pub async fn end_stream(&mut self) -> Result<()>

Send END to start streaming. Does not record (replayed automatically).

Source

pub async fn next_frame(&mut self) -> Result<Option<OwnedFrame>>

Read the next frame, automatically reconnecting on EOF.

Returns Ok(Some(frame)) on success, Ok(None) when the stream truly ends (max attempts exhausted or server sends clean EOF after reconnect), or Err on non-recoverable errors.

Frames with sequence ≤ the last tracked sequence for their station are silently dropped (deduplication after reconnect).

Source

pub fn into_stream(self) -> impl Stream<Item = Result<OwnedFrame>>

Consume this client and return a Stream of frames with auto-reconnect.

Duplicate frames after reconnect are automatically filtered out.

Source

pub fn last_sequence( &self, network: &str, station: &str, ) -> Option<SequenceNumber>

Returns the last received sequence number for a given network/station pair.

Source

pub fn sequences(&self) -> &HashMap<StationKey, SequenceNumber>

Returns a reference to all tracked sequences.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more