pub struct Lse<Server>(/* private fields */);Expand description
The London Strategic Edge live market data connector.
Use the per-dataset aliases — LseFx, LseCrypto, LseEquities, LseFutures,
LseCfd, LseOptions — rather than naming the server type directly.
Trait Implementations§
Source§impl<Server> Connector for Lse<Server>where
Server: LseServer,
impl<Server> Connector for Lse<Server>where
Server: LseServer,
Source§fn requests(
exchange_subs: Vec<ExchangeSub<Self::Channel, Self::Market>>,
) -> Vec<WsMessage> ⓘ
fn requests( exchange_subs: Vec<ExchangeSub<Self::Channel, Self::Market>>, ) -> Vec<WsMessage> ⓘ
One payload per symbol — the provider accepts no batched subscribe.
§⚠️ Nothing sends what this builds
LseSubscriber does not call this: a subscription may carry a replay window and this
function cannot see one, so the subscriber builds its own payloads and the mapper’s output
is discarded where it does so. This is required by the Connector contract and is
implemented faithfully; it is not the route this integration subscribes over.
It shares subscribe_message with the live route, so the two cannot disagree about a
payload’s shape. They do differ in what they are given: this receives one entry per
subscription, while the subscriber sends one per distinct symbol, because a repeated
symbol is one slot and one confirmation on this provider.
On LseOptions it sends one payload per distinct underlying, as the subscriber does. A
contract with no OSI symbol has no underlying to name and is left out; the live route
rejects the batch over it instead, which this infallible signature cannot.
Source§fn expected_responses<InstrumentKey>(map: &Map<InstrumentKey>) -> usize
fn expected_responses<InstrumentKey>(map: &Map<InstrumentKey>) -> usize
One confirmation per distinct symbol — or, on LseOptions, per distinct underlying.
The instrument map holds one entry per registered contract, but the provider confirms an underlying once however many of its contracts are registered, so counting entries would leave the validator waiting out its timeout for confirmations that never come.
Source§const ID: ExchangeId = Server::ID
const ID: ExchangeId = Server::ID
Source§type Channel = LseChannel
type Channel = LseChannel
Subscription into an exchange specific
channel to be subscribed to. Read moreSource§type Market = LseMarket
type Market = LseMarket
Subscription into an exchange specific market that
can be subscribed to. Read moreSource§type Subscriber = LseSubscriber
type Subscriber = LseSubscriber
Subscriber type that establishes a connection with the exchange server, and actions
Subscriptions over the socket.Source§type SubValidator = WebSocketSubValidator
type SubValidator = WebSocketSubValidator
SubscriptionValidator type that listens to responses from the exchange server and
validates if the actioned Subscriptions were
successful.Source§type SubResponse = LseSubResponse
type SubResponse = LseSubResponse
Self::SubValidator expects to receive from the exchange server in
response to the Subscription Self::requests
sent over the WebSocket. Implements
Validator in order to determine if Self
communicates a successful Subscription outcome.Source§fn ping_interval() -> Option<PingInterval>
fn ping_interval() -> Option<PingInterval>
PingInterval of custom application-level
WebSocket pings for the exchange
server being connected with. Read moreSource§fn acknowledged_subscription(
_response: &Self::SubResponse,
) -> Option<SubscriptionId>
fn acknowledged_subscription( _response: &Self::SubResponse, ) -> Option<SubscriptionId>
Self::SubResponse acknowledges, as the SubscriptionId
the mapper keyed it under. Read moreSource§fn subscription_timeout() -> Duration
fn subscription_timeout() -> Duration
Duration the SubscriptionValidator will wait to receive all success
responses to actioned Subscription requests.impl<Server: Copy> Copy for Lse<Server>
Source§impl<'de, Server> Deserialize<'de> for Lse<Server>where
Server: ExchangeServer,
impl<'de, Server> Deserialize<'de> for Lse<Server>where
Server: ExchangeServer,
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
impl<Server: Eq> Eq for Lse<Server>
Source§impl<Server: Ord> Ord for Lse<Server>
impl<Server: Ord> Ord for Lse<Server>
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<Server: PartialOrd> PartialOrd for Lse<Server>
impl<Server: PartialOrd> PartialOrd for Lse<Server>
Source§impl<Server> Serialize for Lse<Server>where
Server: ExchangeServer,
impl<Server> Serialize for Lse<Server>where
Server: ExchangeServer,
Source§impl<Instrument, Server> StreamSelector<Instrument, OrderBooksL1> for Lse<Server>
impl<Instrument, Server> StreamSelector<Instrument, OrderBooksL1> for Lse<Server>
type SnapFetcher = NoInitialSnapshots
type Stream = SharedStream<LseAttachment, LseTransformer<Lse<Server>, <Instrument as InstrumentData>::Key, OrderBooksL1>>
Source§impl<Instrument, Server> StreamSelector<Instrument, PublicTrades> for Lse<Server>
impl<Instrument, Server> StreamSelector<Instrument, PublicTrades> for Lse<Server>
type SnapFetcher = NoInitialSnapshots
type Stream = SharedStream<LseAttachment, LseTransformer<Lse<Server>, <Instrument as InstrumentData>::Key, PublicTrades>>
impl<Server: PartialEq> StructuralPartialEq for Lse<Server>
Auto Trait Implementations§
impl<Server> Freeze for Lse<Server>where
PhantomData<Server>: Freeze,
impl<Server> RefUnwindSafe for Lse<Server>where
PhantomData<Server>: RefUnwindSafe,
impl<Server> Send for Lse<Server>where
PhantomData<Server>: Send,
impl<Server> Sync for Lse<Server>where
PhantomData<Server>: Sync,
impl<Server> Unpin for Lse<Server>where
PhantomData<Server>: Unpin,
impl<Server> UnsafeUnpin for Lse<Server>where
PhantomData<Server>: UnsafeUnpin,
impl<Server> UnwindSafe for Lse<Server>where
PhantomData<Server>: UnwindSafe,
Blanket Implementations§
Source§impl<T> AttachedTransformer<()> for T
impl<T> AttachedTransformer<()> for T
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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> 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 moreimpl<T> JsonSchemaMaybe for T
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.