Struct barter_data::streams::builder::dynamic::DynamicStreams
source · pub struct DynamicStreams<InstrumentId> {
pub trades: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, PublicTrade>>>,
pub l1s: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBookL1>>>,
pub l2s: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBook>>>,
pub liquidations: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, Liquidation>>>,
}Fields§
§trades: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, PublicTrade>>>§l1s: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBookL1>>>§l2s: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBook>>>§liquidations: VecMap<ExchangeId, UnboundedReceiverStream<MarketEvent<InstrumentId, Liquidation>>>Implementations§
source§impl<InstrumentId> DynamicStreams<InstrumentId>
impl<InstrumentId> DynamicStreams<InstrumentId>
sourcepub 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<Id = InstrumentId> + Ord + 'static,
InstrumentId: Clone + Send,
Subscription<BinanceSpot, Instrument, PublicTrades>: Identifier<BinanceMarket>,
Subscription<BinanceSpot, Instrument, OrderBooksL1>: Identifier<BinanceMarket>,
Subscription<BinanceFuturesUsd, Instrument, PublicTrades>: Identifier<BinanceMarket>,
Subscription<BinanceFuturesUsd, Instrument, OrderBooksL1>: 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<BybitPerpetualsUsd, Instrument, PublicTrades>: 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>,
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<Id = InstrumentId> + Ord + 'static,
InstrumentId: Clone + Send,
Subscription<BinanceSpot, Instrument, PublicTrades>: Identifier<BinanceMarket>,
Subscription<BinanceSpot, Instrument, OrderBooksL1>: Identifier<BinanceMarket>,
Subscription<BinanceFuturesUsd, Instrument, PublicTrades>: Identifier<BinanceMarket>,
Subscription<BinanceFuturesUsd, Instrument, OrderBooksL1>: 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<BybitPerpetualsUsd, Instrument, PublicTrades>: 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.
sourcepub fn select_trades(
&mut self,
exchange: ExchangeId,
) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, PublicTrade>>>
pub fn select_trades( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, PublicTrade>>>
Remove an exchange PublicTrade Stream from the DynamicStreams collection.
Note that calling this method will permanently remove this Stream from Self.
sourcepub fn select_all_trades(
&mut self,
) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, PublicTrade>>>
pub fn select_all_trades( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, PublicTrade>>>
Select and merge every exchange PublicTrade Stream using
SelectAll.
sourcepub fn select_l1s(
&mut self,
exchange: ExchangeId,
) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBookL1>>>
pub fn select_l1s( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBookL1>>>
Remove an exchange OrderBookL1 Stream from the DynamicStreams collection.
Note that calling this method will permanently remove this Stream from Self.
sourcepub fn select_all_l1s(
&mut self,
) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBookL1>>>
pub fn select_all_l1s( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBookL1>>>
Select and merge every exchange OrderBookL1 Stream using
SelectAll.
sourcepub fn select_l2s(
&mut self,
exchange: ExchangeId,
) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBook>>>
pub fn select_l2s( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBook>>>
Remove an exchange OrderBook Stream from the DynamicStreams collection.
Note that calling this method will permanently remove this Stream from Self.
sourcepub fn select_all_l2s(
&mut self,
) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBook>>>
pub fn select_all_l2s( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, OrderBook>>>
sourcepub fn select_liquidations(
&mut self,
exchange: ExchangeId,
) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, Liquidation>>>
pub fn select_liquidations( &mut self, exchange: ExchangeId, ) -> Option<UnboundedReceiverStream<MarketEvent<InstrumentId, Liquidation>>>
Remove an exchange Liquidation Stream from the DynamicStreams collection.
Note that calling this method will permanently remove this Stream from Self.
sourcepub fn select_all_liquidations(
&mut self,
) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, Liquidation>>>
pub fn select_all_liquidations( &mut self, ) -> SelectAll<UnboundedReceiverStream<MarketEvent<InstrumentId, Liquidation>>>
Select and merge every exchange Liquidation Stream using
SelectAll.
sourcepub fn select_all<Output>(self) -> impl Stream<Item = Output>where
InstrumentId: Send + 'static,
Output: 'static,
MarketEvent<InstrumentId, PublicTrade>: Into<Output>,
MarketEvent<InstrumentId, OrderBookL1>: Into<Output>,
MarketEvent<InstrumentId, OrderBook>: Into<Output>,
MarketEvent<InstrumentId, Liquidation>: Into<Output>,
pub fn select_all<Output>(self) -> impl Stream<Item = Output>where
InstrumentId: Send + 'static,
Output: 'static,
MarketEvent<InstrumentId, PublicTrade>: Into<Output>,
MarketEvent<InstrumentId, OrderBookL1>: Into<Output>,
MarketEvent<InstrumentId, OrderBook>: Into<Output>,
MarketEvent<InstrumentId, Liquidation>: Into<Output>,
Select and merge every exchange Stream for every data type using
SelectAll.
Note that using MarketEvent<Instrument, DataKind> as the Output is suitable for most
use cases.
Trait Implementations§
Auto Trait Implementations§
impl<InstrumentId> Freeze for DynamicStreams<InstrumentId>
impl<InstrumentId> !RefUnwindSafe for DynamicStreams<InstrumentId>
impl<InstrumentId> Send for DynamicStreams<InstrumentId>where
InstrumentId: Send,
impl<InstrumentId> Sync for DynamicStreams<InstrumentId>where
InstrumentId: Send,
impl<InstrumentId> Unpin for DynamicStreams<InstrumentId>
impl<InstrumentId> !UnwindSafe for DynamicStreams<InstrumentId>
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
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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