Skip to main content

BetfairStreamClient

Struct BetfairStreamClient 

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

Betfair Exchange Stream API client using raw TLS (CRLF-delimited JSON).

On connect, authenticates immediately. On reconnection, replays authentication and any active subscriptions with the latest clk token for delta resumption.

The auth bytes are stored in a watch channel so the caller can push refreshed session tokens via update_auth after keep-alive or HTTP reconnect. The closed flag distinguishes permanent shutdown from transient reconnect.

Implementations§

Source§

impl BetfairStreamClient

Source

pub async fn connect( credential: &BetfairCredential, session_token: String, handler: TcpMessageHandler, config: BetfairStreamConfig, ) -> Result<Self, BetfairStreamError>

Connects to the Betfair stream API and authenticates.

§Errors

Returns an error if the connection fails or authentication cannot be sent.

Source

pub async fn subscribe_markets( &self, market_filter: StreamMarketFilter, data_filter: MarketDataFilter, heartbeat_ms: Option<u64>, conflate_ms: Option<u64>, ) -> Result<(), BetfairStreamError>

Subscribes to market data for the given filter and data fields.

Stores the subscription for automatic replay on reconnection.

§Errors

Returns an error if serialization or sending fails.

Source

pub async fn subscribe_orders( &self, order_filter: Option<OrderFilter>, heartbeat_ms: Option<u64>, ) -> Result<(), BetfairStreamError>

Subscribes to order updates.

Stores the subscription for automatic replay on reconnection.

§Errors

Returns an error if serialization or sending fails.

Source

pub fn is_active(&self) -> bool

Returns true if the connection is active.

Source

pub fn authentication_state(&self) -> StreamLifecycleState

Source

pub fn market_subscription_state(&self) -> StreamLifecycleState

Source

pub fn order_subscription_state(&self) -> StreamLifecycleState

Source

pub async fn wait_for_authentication_state( &self, expected: StreamLifecycleState, )

Waits for the authentication lifecycle component to equal expected.

Returns immediately if the component is already in the exact expected state; otherwise waits for a later transition. A transient expected state that is replaced before this task observes it can be missed because transitions are not recorded as history. This method has no internal timeout; callers wanting a bound should wrap it in [tokio::time::timeout].

Source

pub async fn wait_for_market_subscription_state( &self, expected: StreamLifecycleState, )

Waits for the market subscription lifecycle component to equal expected.

Returns immediately if the component is already in the exact expected state; otherwise waits for a later transition. A transient expected state that is replaced before this task observes it can be missed because transitions are not recorded as history. This method has no internal timeout; callers wanting a bound should wrap it in [tokio::time::timeout].

Source

pub async fn wait_for_order_subscription_state( &self, expected: StreamLifecycleState, )

Waits for the order subscription lifecycle component to equal expected.

Returns immediately if the component is already in the exact expected state; otherwise waits for a later transition. A transient expected state that is replaced before this task observes it can be missed because transitions are not recorded as history. This method has no internal timeout; callers wanting a bound should wrap it in [tokio::time::timeout].

Source

pub fn is_authenticated(&self) -> bool

Source

pub fn is_market_ready(&self) -> bool

Source

pub fn is_order_ready(&self) -> bool

Source

pub fn update_auth(&self, app_key: &str, session_token: String)

Pushes refreshed auth bytes so the next reconnection or subscription uses the current session token instead of the one from initial connect.

Source

pub fn request_reconnect(&self) -> bool

Requests replacement of the active stream transport.

Returns true only when this call starts a reconnect. Duplicate requests and requests after close return false.

Source

pub async fn close(&self) -> Result<(), BetfairStreamError>

Closes the stream connection.

§Errors

Returns an error if the dead-peer task fails or does not stop after abort.

Trait Implementations§

Source§

impl Debug for BetfairStreamClient

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for BetfairStreamClient

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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.
§

impl<T> Ungil for T
where T: Send,

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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