Skip to main content

Module server

Module server 

Source
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§

FutuGrpcService
gRPC 服务实现
GrpcPushBroadcaster
gRPC 推送广播器

Functions§

build_service
构建 gRPC 服务(供外部调用 tonic Server 使用)
build_service_with_auth
构建 gRPC 服务(带 KeyStore 鉴权 + 共享限额 counters)
start
启动 gRPC 服务
start_with_auth
启动 gRPC 服务(带 KeyStore 鉴权 + 共享限额 counters)