Skip to main content

SubscribeRequest

Struct SubscribeRequest 

Source
pub struct SubscribeRequest {
    pub channel: String,
    pub symbol: Option<String>,
    pub symbols: Option<Vec<String>>,
    pub after_hours: Option<bool>,
    pub intraday_odd_lot: Option<bool>,
}
Expand description

Subscription request for WebSocket

Modifier flags (after_hours, intraday_odd_lot) are preserved across reconnection so a 盤後 or 盤中零股 subscription comes back as the same session — previous design stored only {channel, symbol} which silently downgraded on resubscribe.

On the wire either symbol (single) or symbols (batch) is populated, never both — see Symbols. The two fields are encoded separately because the Fugle server protocol uses the field presence to drive its ACK shape (subscribed event data is an object for single, array for batch).

Fields§

§channel: String

Channel to subscribe to

§symbol: Option<String>

Stock symbol for the single-symbol path. Mutually exclusive with symbols. Both None is allowed for channel-only subscriptions (e.g. indices) where the server doesn’t require a symbol.

§symbols: Option<Vec<String>>

Batch symbol list for the multi-symbol path. Mutually exclusive with symbol. Serializes as symbols: [...] on the wire.

§after_hours: Option<bool>

FutOpt after-hours session flag. Sent as afterHours: true on wire when set; absent otherwise so stock path serializes unchanged.

§intraday_odd_lot: Option<bool>

Stock intraday odd-lot flag. Sent as intradayOddLot: true on wire when set; absent otherwise.

Implementations§

Source§

impl SubscribeRequest

Source

pub fn builder() -> SubscribeRequestBuilder

Create an instance of SubscribeRequest using the builder syntax

Source§

impl SubscribeRequest

Source

pub fn new(channel: Channel, symbol: impl Into<String>) -> Self

Create a new single-symbol subscription request.

For the polymorphic single/batch variant, use SubscribeRequest::with_symbols.

Source

pub fn with_symbols(channel: Channel, symbols: impl Into<Symbols>) -> Self

Create a subscription request from a Symbols.

Accepts &str / String / Vec<String> / array literal / slice via impl Into<Symbols>. Routes to the symbol or symbols wire field based on the variant.

The input runs through Symbols::normalized before being attached to the request, so duplicate symbols collapse to one subscription and whitespace-only differences are squashed. Empty inputs produce a request with no symbols attached (the dispatch path treats this as a no-op on the wire).

Source

pub fn expand(self) -> Vec<SubscribeRequest>

Expand a batch request into N single-symbol requests.

For wire transmission a batch SubscribeRequest is sent as a single frame with symbols: [...], but for internal bookkeeping (and reconnect replay) each symbol must occupy its own row in SubscriptionManager so that the server’s per-symbol ACK can be recorded against a stable local key. This helper materializes the expansion; single-symbol requests pass through unchanged.

Modifier flags (after_hours, intraday_odd_lot) are duplicated to every expanded entry — batches always share their modifier flags across the symbols they enumerate.

Source

pub fn key(&self) -> String

Generate subscription key for tracking.

Includes modifier suffix so 盤後/零股 subscriptions occupy distinct slots from their regular-session counterparts — the key is the identity used by SubscriptionManager for reconnect, replacement, and unsubscribe lookup.

Trait Implementations§

Source§

impl Clone for SubscribeRequest

Source§

fn clone(&self) -> SubscribeRequest

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SubscribeRequest

Source§

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

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

impl Default for SubscribeRequest

Source§

fn default() -> SubscribeRequest

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for SubscribeRequest

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for SubscribeRequest

Source§

fn eq(&self, other: &SubscribeRequest) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for SubscribeRequest

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for SubscribeRequest

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,