Expand description
v1.4.106 codex 0450 F3 (P2): PriceReminder 数量上限 cooldown cache.
抽自 crates/futu-gateway-qot/src/handlers/qot/price_reminder.rs (audit 0450
整体重构落点) — 不允许 inline integration, 必须独立 module + bridge.rs
field 注入.
§C++ 来源
o-src/FutuOpenD/Src/NNDataCenter/Quote/NNData_PriceReminder.cpp:101-164:
SetTotalPriceReminderNumExceed(enLimitMkt)— 在 backend ackRSP_CODE_NUM_LIMIT (=2)时, 把(enLimitMkt → svr_now)写进m_mapNumExceedTime.IsTotalPriceReminderNumExceed(enLimitMkt)— Add 前检查 cooldown 是否 仍在 10 min 内 (PriceReminderRestrictTime = 60*10); 是则 short-circuit 不再 call backend.SetStockPriceReminderNumExceed(stock_id, type)/IsStockPriceReminderNumExceed— 同样语义但按 (stock_id, reminder_type) 维度.ResetTotalPriceReminderNumExceed— 在 Del / DelAll 成功 ack 后清 cooldown.ResetStockPriceReminderNumExceed(stock_id, type)— Del 时按 type 清, DelAll 时 (type=None) 清整个 stock 下所有.
§ack-then-commit 语义 (F1)
cooldown 仅在 backend ack 后写入 — 不能在 client 请求 in-flight 期间
提前 commit. 这与 C++ OnOMEvent_Reply_SetPriceReminder (line 1007-1014)
完全对齐.
§全部限流市场分类 (来自 C++ APIServer_Qot_PriceReminder.cpp:235-279
GetPriceReminderLimitMarket)
- HK 股 / HK 期权 (按 IsOptionCode 分两类)
- US 股 / US 期权
- CN (沪深)
- SG / JP
§线程模型
dashmap::DashMap 作 lock-free concurrent — 多 handler 并发 Add/Del 安全.
Structs§
- Price
Reminder Cooldown Cache - PriceReminder cooldown cache.
Enums§
- Limit
Market NN_PriceReminderLimitMarket枚举 — 来自 C++o-src/FutuOpenD/Src/NNData/Quote/Define/NNData_PriceReminder_Define.h(推断, C++ 端是常规 enum class).
Constants§
- PRICE_
REMINDER_ RESTRICT_ SECS - C++
PriceReminderRestrictTime = 60 * 10秒 = 10 分钟.