Expand description
v1.4.110 codex QOT C++ alignment Phase 3 Slice 6e: CMD6825 broker-aware market state.
替代旧 CMD6823 路径, 给 GetMarketState 提供 (market_id, broker_id_or_0) 双维 lookup.
CMD 6825 NN_ProtoCmd_Qot_Pull_MarketState — 拉取市场状态 (broker-aware).
对齐 C++:
NNProtoCenter/Quote/NNBiz_Qot_MarketState.cpp:17-28PullMarketState(): 构造market_tradingDay::MarketInfoReq, 加add_market_id(...)(按 request market_id 集合), 无条件设set_is_need_crypto_multi_broker(true), 走NN_TCPProtoCategory_Other发 CMD 6825.NNProtoCenter/Quote/NNBiz_Qot_MarketState.cpp:113-114OnReply_*: 遍历pbF3C.infos()(MarketInfoItem), 用MarketKey(market_id, has_broker_id ? broker_id : 0)作为mapIDStatuskey, 保存market_status. 双维 lookup 时, 非 crypto 市场用broker_id=0.APIServer/Business/Quote/APIServer_Qot_MarketState.cpp:207-237回填:i32_t nBrokerID = pbF3CMarketInfo.has_broker_id() ? pbF3CMarketInfo.broker_id() : 0;mapIDStatus[MarketKey(market_id, nBrokerID)] = market_status;
§v1.4.110 codex QOT Phase 3 Slice 6e
之前 Rust GetMarketStateHandler 走 CMD6823 MarketStatus_Req 拉全市场
snapshot (不带 broker_id), 与 C++ 行为发散 (C++ 自 10.5.6508 已切 CMD 6825 +
MarketInfoReq.is_need_crypto_multi_broker=true). 本模块补这条 caller,
response 解析为按 (market_id, broker_id_or_0) 双维的 MarketStatusItem.
§Hardcoded / Assumption Ledger
- CMD 6825 (
NN_ProtoCmd_Qot_Pull_MarketState) 来源:/Users/leaf/ai-lab/o-src/FutuOpenD/Src/NNBase/NNBase_Define_ProtoCmd.h:135. 该 cmd 已在is_unencrypted_proto白名单 (nn_codec.rs:397). is_need_crypto_multi_broker = Some(true)对齐 C++ 无条件设 (line 24 / line 73). 即使本次 request 全部 non-crypto market_id, C++ 仍设, Rust 也设. 理由: backend 对 non-crypto market 不依赖此 flag, 设为 true 不产生副作用.broker_id缺失时默认 0 对齐 C++pbF3CMarketInfo.has_broker_id() ? pbF3CMarketInfo.broker_id() : 0. Non-crypto market backend 不下发该字段.
Structs§
- Market
Status Item MarketInfoRsp解析后的单条市场状态条目.
Constants§
- CMD_
FETCH_ MARKET_ INFO - CMD 号 — 行情拉取市场状态.
Functions§
- pull_
market_ info - 发 CMD 6825
MarketInfoReq, 解析 response 成MarketStatusItem列表.