DynamicStreams

Struct DynamicStreams 

Source
pub struct DynamicStreams<InstrumentKey> {
    pub trades: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, PublicTrade>>>,
    pub l1s: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookL1>>>,
    pub l2s: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookEvent>>>,
    pub liquidations: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, Liquidation>>>,
}

Fields§

§trades: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, PublicTrade>>>§l1s: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookL1>>>§l2s: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookEvent>>>§liquidations: VecMap<ExchangeId, UnboundedReceiverStream<MarketStreamResult<InstrumentKey, Liquidation>>>

Implementations§

Source§

impl<InstrumentKey> DynamicStreams<InstrumentKey>

Source

pub async fn init<SubBatchIter, SubIter, Sub, Instrument>( subscription_batches: SubBatchIter, ) -> Result<Self, DataError>
where SubBatchIter: IntoIterator<Item = SubIter>, SubIter: IntoIterator<Item = Sub>, Sub: Into<Subscription<ExchangeId, Instrument, SubKind>>, Instrument: InstrumentData<Key = InstrumentKey> + Ord + Display + 'static, InstrumentKey: Debug + Clone + Send + 'static, Subscription<BinanceSpot, Instrument, PublicTrades>: Identifier<BinanceMarket>, Subscription<BinanceSpot, Instrument, OrderBooksL1>: Identifier<BinanceMarket>, Subscription<BinanceSpot, Instrument, OrderBooksL2>: Identifier<BinanceMarket>, Subscription<BinanceFuturesUsd, Instrument, PublicTrades>: Identifier<BinanceMarket>, Subscription<BinanceFuturesUsd, Instrument, OrderBooksL1>: Identifier<BinanceMarket>, Subscription<BinanceFuturesUsd, Instrument, OrderBooksL2>: Identifier<BinanceMarket>, Subscription<BinanceFuturesUsd, Instrument, Liquidations>: Identifier<BinanceMarket>, Subscription<Bitfinex, Instrument, PublicTrades>: Identifier<BitfinexMarket>, Subscription<Bitmex, Instrument, PublicTrades>: Identifier<BitmexMarket>, Subscription<BybitSpot, Instrument, PublicTrades>: Identifier<BybitMarket>, Subscription<BybitSpot, Instrument, OrderBooksL1>: Identifier<BybitMarket>, Subscription<BybitSpot, Instrument, OrderBooksL2>: Identifier<BybitMarket>, Subscription<BybitPerpetualsUsd, Instrument, PublicTrades>: Identifier<BybitMarket>, Subscription<BybitPerpetualsUsd, Instrument, OrderBooksL1>: Identifier<BybitMarket>, Subscription<BybitPerpetualsUsd, Instrument, OrderBooksL2>: Identifier<BybitMarket>, Subscription<Coinbase, Instrument, PublicTrades>: Identifier<CoinbaseMarket>, Subscription<GateioSpot, Instrument, PublicTrades>: Identifier<GateioMarket>, Subscription<GateioFuturesUsd, Instrument, PublicTrades>: Identifier<GateioMarket>, Subscription<GateioFuturesBtc, Instrument, PublicTrades>: Identifier<GateioMarket>, Subscription<GateioPerpetualsUsd, Instrument, PublicTrades>: Identifier<GateioMarket>, Subscription<GateioPerpetualsBtc, Instrument, PublicTrades>: Identifier<GateioMarket>, Subscription<GateioOptions, Instrument, PublicTrades>: Identifier<GateioMarket>, Subscription<Kraken, Instrument, PublicTrades>: Identifier<KrakenMarket>, Subscription<Kraken, Instrument, OrderBooksL1>: Identifier<KrakenMarket>, Subscription<Okx, Instrument, PublicTrades>: Identifier<OkxMarket>,

Initialise a set of Streams by providing one or more Subscription batches.

Each batch (ie/ impl Iterator<Item = Subscription>) will initialise at-least-one WebSocket Stream under the hood. If the batch contains more-than-one ExchangeId and/or SubKind, it will be further split under the hood for compile-time reasons.

§Examples

Please see barter-data-rs/examples/dynamic_multi_stream_multi_exchange.rs for a comprehensive example of how to use this market data stream initialiser.

Source

pub fn select_trades( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, PublicTrade>>>

Remove an exchange PublicTrade Stream from the DynamicStreams collection.

Note that calling this method will permanently remove this Stream from Self.

Source

pub fn select_all_trades( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, PublicTrade>>>

Select and merge every exchange PublicTrade Stream using SelectAll.

Source

pub fn select_l1s( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookL1>>>

Remove an exchange OrderBookL1 Stream from the DynamicStreams collection.

Note that calling this method will permanently remove this Stream from Self.

Source

pub fn select_all_l1s( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookL1>>>

Select and merge every exchange OrderBookL1 Stream using SelectAll.

Source

pub fn select_l2s( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookEvent>>>

Remove an exchange OrderBookEvent Stream from the DynamicStreams collection.

Note that calling this method will permanently remove this Stream from Self.

Source

pub fn select_all_l2s( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, OrderBookEvent>>>

Select and merge every exchange OrderBookEvent Stream using SelectAll.

Source

pub fn select_liquidations( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, Liquidation>>>

Remove an exchange Liquidation Stream from the DynamicStreams collection.

Note that calling this method will permanently remove this Stream from Self.

Source

pub fn select_all_liquidations( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketStreamResult<InstrumentKey, Liquidation>>>

Select and merge every exchange Liquidation Stream using SelectAll.

Source

pub fn select_all<Output>(self) -> impl Stream<Item = Output>
where InstrumentKey: Send + 'static, Output: 'static, MarketStreamResult<InstrumentKey, PublicTrade>: Into<Output>, MarketStreamResult<InstrumentKey, OrderBookL1>: Into<Output>, MarketStreamResult<InstrumentKey, OrderBookEvent>: Into<Output>, MarketStreamResult<InstrumentKey, Liquidation>: Into<Output>,

Select and merge every exchange Stream for every data type using select_all

Note that using MarketStreamResult<Instrument, DataKind> as the Output is suitable for most use cases.

Trait Implementations§

Source§

impl<InstrumentKey: Debug> Debug for DynamicStreams<InstrumentKey>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<InstrumentKey> Freeze for DynamicStreams<InstrumentKey>

§

impl<InstrumentKey> RefUnwindSafe for DynamicStreams<InstrumentKey>

§

impl<InstrumentKey> Send for DynamicStreams<InstrumentKey>
where InstrumentKey: Send,

§

impl<InstrumentKey> Sync for DynamicStreams<InstrumentKey>
where InstrumentKey: Send,

§

impl<InstrumentKey> Unpin for DynamicStreams<InstrumentKey>

§

impl<InstrumentKey> UnwindSafe for DynamicStreams<InstrumentKey>

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> 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
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 = 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

impl<T> ErasedDestructor for T
where T: 'static,