futu_backend/
stock_note_push.rs1use futu_core::error::{FutuError, Result};
4use prost::Message;
5
6#[derive(Debug, Clone, PartialEq, Eq)]
7pub struct StockNotePushItem {
8 pub stock_id: Option<u64>,
9 pub title: Option<String>,
10 pub is_display: Option<u32>,
11}
12
13#[derive(Debug, Clone, PartialEq, Eq)]
14pub struct StockNoteChangedPush {
15 pub uid: Option<u64>,
16 pub operation: Option<u32>,
17 pub item: Option<StockNotePushItem>,
18}
19
20pub fn decode_stock_note_changed_push(body: &[u8]) -> Result<StockNoteChangedPush> {
21 let wire = crate::proto_internal::stock_note_svr::NoteChangePush::decode(body)
22 .map_err(|error| FutuError::Codec(format!("CMD9430 decode: {error}")))?;
23 Ok(StockNoteChangedPush {
24 uid: wire.uid,
25 operation: wire.ops_type,
26 item: wire.note_item.map(|item| StockNotePushItem {
27 stock_id: item.stock_id,
28 title: item.title,
29 is_display: item.is_display,
30 }),
31 })
32}
33
34#[cfg(test)]
35#[path = "stock_note_push_tests.rs"]
36mod tests;