From 08450ee71a9b3c0d87760b0d66783912539d981e Mon Sep 17 00:00:00 2001 From: Sunli Date: Fri, 15 Mar 2024 22:16:34 +0800 Subject: [PATCH] remove checking sequence behavior --- rust/src/quote/core.rs | 9 +++++---- rust/src/quote/push_types.rs | 1 + rust/src/quote/store.rs | 37 +++++------------------------------- 3 files changed, 11 insertions(+), 36 deletions(-) diff --git a/rust/src/quote/core.rs b/rust/src/quote/core.rs index 20894db66..ab2845bd9 100644 --- a/rust/src/quote/core.rs +++ b/rust/src/quote/core.rs @@ -711,6 +711,8 @@ impl Core { } } + tracing::debug!(subscriptions = ?subscriptions, "resubscribe"); + for (flags, symbols) in subscriptions { self.ws_cli .request( @@ -724,17 +726,16 @@ impl Core { ) .await?; } - Ok(()) } async fn handle_push(&mut self, command_code: u8, body: Vec) -> Result<()> { match PushEvent::parse(command_code, &body) { Ok((mut event, tag)) => { + tracing::debug!(event = ?event, tag = ?tag,"push event"); + if tag != Some(PushQuoteTag::Eod) { - if !self.store.handle_push(&mut event) { - return Ok(()); - } + self.store.handle_push(&mut event); } if let PushEventDetail::Trade(trades) = &event.detail { diff --git a/rust/src/quote/push_types.rs b/rust/src/quote/push_types.rs index 8d7f4e41f..2be03f10d 100644 --- a/rust/src/quote/push_types.rs +++ b/rust/src/quote/push_types.rs @@ -99,6 +99,7 @@ pub enum PushEventDetail { /// Push event #[derive(Debug)] pub struct PushEvent { + #[allow(dead_code)] pub(crate) sequence: i64, /// Security code pub symbol: String, diff --git a/rust/src/quote/store.rs b/rust/src/quote/store.rs index 931d4a8e5..681f72a7b 100644 --- a/rust/src/quote/store.rs +++ b/rust/src/quote/store.rs @@ -10,15 +10,6 @@ use crate::quote::{ const MAX_TRADES: usize = 500; -macro_rules! check_sequence { - ($prev:expr, $new:expr) => { - if $new != 0 && $new <= $prev { - return false; - } - $prev = $new; - }; -} - macro_rules! merge_decimal { ($prev:expr, $new:expr, $field:ident) => { if !$new.$field.is_zero() { @@ -41,18 +32,14 @@ macro_rules! merge_i64 { #[derive(Debug, Default)] pub(crate) struct SecuritiesData { - pub(crate) quote_sequence: i64, pub(crate) quote: PushQuote, - pub(crate) depth_sequence: i64, pub(crate) asks: Vec, pub(crate) bids: Vec, - pub(crate) brokers_sequence: i64, pub(crate) ask_brokers: Vec, pub(crate) bid_brokers: Vec, - pub(crate) trades_sequence: i64, pub(crate) trades: Vec, pub(crate) board: SecurityBoard, @@ -65,30 +52,16 @@ pub(crate) struct Store { } impl Store { - pub(crate) fn handle_push(&mut self, event: &mut PushEvent) -> bool { + pub(crate) fn handle_push(&mut self, event: &mut PushEvent) { let data = self.securities.entry(event.symbol.clone()).or_default(); match &mut event.detail { - PushEventDetail::Quote(quote) => { - check_sequence!(data.quote_sequence, event.sequence); - merge_quote(data, quote); - } - PushEventDetail::Depth(depth) => { - check_sequence!(data.depth_sequence, event.sequence); - merge_depth(data, depth); - } - PushEventDetail::Brokers(brokers) => { - check_sequence!(data.brokers_sequence, event.sequence); - merge_brokers(data, brokers); - } - PushEventDetail::Trade(trade) => { - check_sequence!(data.trades_sequence, event.sequence); - merge_trades(data, trade); - } + PushEventDetail::Quote(quote) => merge_quote(data, quote), + PushEventDetail::Depth(depth) => merge_depth(data, depth), + PushEventDetail::Brokers(brokers) => merge_brokers(data, brokers), + PushEventDetail::Trade(trade) => merge_trades(data, trade), PushEventDetail::Candlestick(_) => unreachable!(), } - - true } }