Expand description
gRPC 服务实现
FutuOpenD 服务通过通用的 proto_id + body 方式, 将所有请求转发到现有的 RequestRouter。 支持流式推送:行情、交易、广播事件通过 SubscribePush 接口推送给客户端。
§v1.4.106 codex 0517 ζ25-redo F2: stateful QOT stable identity
gRPC request() 与 subscribe_push() 共享同一身份派生函数
[auth::derive_grpc_conn_id]:从 (Bearer token, optional grpc-session-id metadata) 派生 deterministic stable conn_id(在
[auth::GRPC_STABLE_CONN_NAMESPACE] 即 bit 62 namespace 内)。
这让同一 caller 的连续 RPC 命中同一 SubscriptionManager / cache 状态:
- subscribe → unsubscribe / get_sub_info / query_subscription 全对齐
- quote cache 命中(per-conn cache 不再每次 RPC miss)
- QOT push fanout per-conn filter 能找到 caller
不同 Bearer / 不同 session_id → 自然隔离(caller 之间互不影响)。 Legacy mode(KeyStore 未配置 / Bearer 缺失)→ 共享一个固定 conn_id( 全 legacy caller 共享同 sub state,对齐“无鉴权配置 = 单租户“语义)。
历史:v1.4.105 之前用自增 conn_id_counter,每次 RPC 拿新 ID,
等价 REST v1.4.90 P0-B 之前的 quota 永久泄漏 bug。F2 修复对齐
REST_SHARED_CONN 设计哲学,不同点是 gRPC 按 caller 隔离(REST 共享)。
Structs§
- Futu
Grpc Service - gRPC 服务实现
- Grpc
Push Broadcaster - gRPC 推送广播器
Functions§
- build_
service - 构建 gRPC 服务(供外部调用 tonic Server 使用)
- build_
service_ with_ auth - 构建 gRPC 服务(带 KeyStore 鉴权 + 共享限额 counters)
- start
- 启动 gRPC 服务
- start_
with_ auth - 启动 gRPC 服务(带 KeyStore 鉴权 + 共享限额 counters)