pub struct FutuServer {
pub state: ServerState,
legacy_log_level: Arc<AtomicU8>,
legacy_push_service_lease: Arc<LegacyPushServiceLease>,
}Fields§
§state: ServerState§legacy_log_level: Arc<AtomicU8>§legacy_push_service_lease: Arc<LegacyPushServiceLease>Implementations§
Source§impl FutuServer
impl FutuServer
Sourcepub(crate) async fn resolve_read_trd_account(
&self,
tool: &'static str,
req: &TrdAccReq,
req_ctx: &RequestContext<RoleServer>,
) -> Result<ResolvedTrdAccount, String>
pub(crate) async fn resolve_read_trd_account( &self, tool: &'static str, req: &TrdAccReq, req_ctx: &RequestContext<RoleServer>, ) -> Result<ResolvedTrdAccount, String>
Resolve a TrdAccReq account selector for MCP read tools.
This preserves the v1.4.103-v1.4.106 security order:
- authenticate caller with the same API key priority as the tool;
- open the gateway client;
- resolve
card_numinside the caller’s allowed account snapshot; - re-check the final
acc_idbefore dispatch.
Source§impl FutuServer
impl FutuServer
Sourcepub(crate) fn tool_err(msg: impl Display) -> Result<String, String>
pub(crate) fn tool_err(msg: impl Display) -> Result<String, String>
v1.4.58 Phase C1: 新 helper — 返 Result<String, String> 让 rmcp 自动
set top-level CallToolResult.is_error = Some(true)(对齐 MCP spec)。
迁移策略(C1/C2/C3 拆 3 commit,都进 v1.4.58 一个版本):
- C1:加此 helper + 迁移 5-10 pilot handlers
- C2:批量迁移剩余 70+ handlers
- C3:删除
Self::err/Self::wrapString hack(v1.4.42 遗留)
Client 双信号(向后兼容):
- Top-level
is_error: true(MCP spec 正确方式) - Content JSON 里仍含
{"error": msg, ...}(老 client 兼容)
rmcp IntoCallToolResult for Result<T, E> impl 自动把 Err 转成
CallToolResult { is_error: Some(true), content: [msg.into_contents()] }。
Sourcefn mcp_reject_to_json(
kind: RejectKind,
reason: String,
tool: &str,
audit_key_id: &str,
) -> String
fn mcp_reject_to_json( kind: RejectKind, reason: String, tool: &str, audit_key_id: &str, ) -> String
v1.4.106 D1 5d: MCP-specific reject translator (rich context: tool + audit_key_id).
MCP 返 JSON-encoded String (rmcp Err(String) → 自动 CallToolResult { is_error: Some(true), ... }, 见 tool_err 注释).
rich context 路径 (require_acc_read_with_acc_id / require_trading 等):
把 kind + reason + tool + audit_key_id 翻成 user-friendly
MCP error JSON. 这里保留 tool name + audit_key_id, 让 LLM agent 知道
是哪个 tool 哪把 key.
不变量 (与 v1.4.105 byte-identical):
- Unauthenticated → “API key required for {tool}: …”
- Forbidden → “API key {audit_key_id:?} forbidden: {reason}” (注意: reason 在 MCP 路径保留, 与 REST/gRPC generic 不同; MCP 是 LLM agent 调试场景, 反推风险低 + agent 需要清晰 hint 来纠正参数)
- RateLimited → “rate limit: {reason}”
- 其他 → reason
Sourcepub(crate) fn wrap_result<E: Display>(
res: Result<String, E>,
) -> Result<String, String>
pub(crate) fn wrap_result<E: Display>( res: Result<String, E>, ) -> Result<String, String>
v1.4.58 Phase C1: wrap 新版 —— 返 Result<String, String>。C2 批量迁移时使用。
Sourcepub(crate) fn result_as_str(r: &Result<String, String>) -> &str
pub(crate) fn result_as_str(r: &Result<String, String>) -> &str
v1.4.58 Phase C2: 从 Result<String, String> 抽 string content 作 &str。
用于 guard::emit_trade_outcome 等接受 &str 的 side-effect observers —
无论 Ok/Err 都有 string 可引用。
pub(crate) async fn client_or_err(&self) -> Result<Arc<FutuClient>, String>
Sourcepub(crate) async fn read_client_or_err(
&self,
tool: &'static str,
req_ctx: &RequestContext<RoleServer>,
api_key_override: Option<&str>,
acc_id: Option<u64>,
) -> Result<Arc<FutuClient>, String>
pub(crate) async fn read_client_or_err( &self, tool: &'static str, req_ctx: &RequestContext<RoleServer>, api_key_override: Option<&str>, acc_id: Option<u64>, ) -> Result<Arc<FutuClient>, String>
Common MCP read path: caller-specific guard first, then gateway client.
Used by read-only tools that do not need the returned caller snapshot for
account/card filtering. Account-specific tools still call
require_acc_read_with_acc_id directly so they can pass the same snapshot
into account locator / response filtering.
Sourcepub(crate) fn require_acc_read_with_acc_id(
&self,
tool: &'static str,
req_ctx: &RequestContext<RoleServer>,
api_key_override: Option<&str>,
acc_id: Option<u64>,
) -> Result<CallerSnapshot, String>
pub(crate) fn require_acc_read_with_acc_id( &self, tool: &'static str, req_ctx: &RequestContext<RoleServer>, api_key_override: Option<&str>, acc_id: Option<u64>, ) -> Result<CallerSnapshot, String>
v1.4.103 (codex 51 F1 / 52 F1 / 53 F1 / 54 F4 / 58 F1 — B5 + B6): per-request caller-specific scope 守卫 + acc_id 白名单 check.
旧 require_tool_scope 只看 process-wide state.authed_key (startup
捕获), HTTP 客户端带窄权限 Bearer 时 read tool 仍按 startup key 放行 —
跨账户 leak.
本方法接 req_ctx (rmcp request context) + 可选 api_key_override
(tool args 里的 api_key 字段, 与 trade write tools 一致) + 可选 acc_id,
优先级: api_key_override > HTTP Authorization Bearer > startup key.
解析得到 caller-specific KeyRecord 后:
- 检查 scope (基于 caller 的 scope, 不是 startup 的)
- 若 acc_id 提供 + caller key 有 allowed_acc_ids → 检查 acc_id ∈ allowed
stdio mode (无 Bearer) + 无 api_key_override → fall back 到 startup key 行为, 不破坏 stdio 用户体验.
返 Some(error_json) 拒绝, None 放行.
§v1.4.104 阶段 4: pipeline 委托
caller-specific KeyRecord 解析 + Bearer 不存在的 fail-closed 仍在本地
(要保留 v1.4.103 codex F4 verbose error message). scope check + acc_id
白名单 + audit emit 委托给 [futu_auth_pipeline::authenticate_request]
(跨 surface 共享: gRPC server.rs / WS ws_listener.rs / REST auth.rs 同源).
LoC 减 ~80 行, 行为与 v1.4.103 byte-identical.
Sourcepub(crate) fn require_push_continuation(
&self,
operation: &'static str,
req_ctx: &RequestContext<RoleServer>,
) -> Result<CallerSnapshot, String>
pub(crate) fn require_push_continuation( &self, operation: &'static str, req_ctx: &RequestContext<RoleServer>, ) -> Result<CallerSnapshot, String>
Re-authenticate a long-lived 2026 resource operation against a stable transport identity. HTTP requires the request Bearer; stdio requires the startup key id. Tool-argument overrides are intentionally excluded: they cannot be reproduced by later resources/read or subscriptions/listen.
Sourcepub(crate) fn has_reusable_push_identity(
&self,
req_ctx: &RequestContext<RoleServer>,
) -> bool
pub(crate) fn has_reusable_push_identity( &self, req_ctx: &RequestContext<RoleServer>, ) -> bool
Read-only capability probe for MCP 2026 resource continuations.
Discovery must not spend quota or emit an allow/reject audit record. It
therefore resolves only the transport-stable identity and applies the
same machine/expiry/acc:read facts used by the enforcing continuation
path. The actual resource method re-authenticates and audits immediately
before touching queue/listener state.
Sourcepub(crate) fn require_same_push_continuation_identity(
&self,
req_ctx: &RequestContext<RoleServer>,
tool_snapshot: &CallerSnapshot,
) -> Result<CallerSnapshot, String>
pub(crate) fn require_same_push_continuation_identity( &self, req_ctx: &RequestContext<RoleServer>, tool_snapshot: &CallerSnapshot, ) -> Result<CallerSnapshot, String>
Prove that the identity used by futu_sub_acc_push can be reproduced by
later resource requests. This is evaluated before gateway connection and
daemon dispatch, so mismatch cannot leave a remote orphan subscription.
fn authenticate_mcp_read( &self, operation: &'static str, needed_scope: Scope, req_ctx: &RequestContext<RoleServer>, api_key_override: Option<&str>, acc_id: Option<u64>, require_stable_identity: bool, ) -> Result<CallerSnapshot, String>
Sourcepub(crate) fn require_trading(
&self,
tool: &'static str,
env: &str,
ctx: Option<CheckCtx>,
override_key: Option<&str>,
) -> Option<String>
pub(crate) fn require_trading( &self, tool: &'static str, env: &str, ctx: Option<CheckCtx>, override_key: Option<&str>, ) -> Option<String>
交易写守卫;ctx=Some 时同时做限额检查;override_key=Some 时优先用该 plaintext.
§v1.4.104 阶段 7-4: pipeline 委托
把 guard::require_trading 165 LoC 折叠为 ~70 LoC 调用 pipeline:
- legacy 2 级开关 (
enable_trading/allow_real_trading) 仍在本地 (MCP-specific, pipeline 不知 daemon 启动 flag). - per-call
override_key仍在本地 verify (保留 v1.4.103 codex F4 verbose error message: “per-call api_key invalid”). - scope check + expiry + rate gate + body-aware ctx + audit 全
委托
authenticate_request(与 4 surface unified).
Sourcepub(crate) fn require_caller_key_strict(
&self,
tool: &'static str,
override_key: Option<&str>,
) -> Result<Option<Arc<KeyRecord>>, String>
pub(crate) fn require_caller_key_strict( &self, tool: &'static str, override_key: Option<&str>, ) -> Result<Option<Arc<KeyRecord>>, String>
v1.4.105 D12 contract-hardening 补丁: 拿当前 caller 的 KeyRecord (per-call key
优先 > startup key). legacy mode (无 keys.json) 返 None.
用于 trade tool 调 resolve_acc_id_with_card_num 时获取
allowed_card_nums 做 string-level whitelist 校验.
codex round 1 F2 (P2) v1.4.105 移除老的 current_key_rec —
改用下面 require_caller_key_strict (fail-closed). 移除原因: invalid
override 时 silent fallback startup → 给 backend resolve_acc_id_with_card_num
探测 leak. legacy mode 仍由 strict helper Ok(None) 返回处理.
codex round 1 F2 (P2) v1.4.105: 在 trade write 路径里先验证 caller
key + fail-closed, 再 resolve_acc_id_with_card_num. 防 invalid
Bearer 仍触发 daemon GetAccList + 用 startup key 的 allowed_card_nums
做 resolution (探测 leakage).
与 current_key_rec 区别:
current_key_rec: invalid override → silent fallback startup key → resolve 已 side-effect.require_caller_key_strict: invalid override → 立即 Err 返 reject JSON, 绝不 fallback. 也保护 legacy mode (返 Ok(None)) 不破.
Return:
Ok(Some(rec)): caller key 已验, 用其allowed_card_nums做 resolveOk(None): scope mode 关闭 (legacy), require_trading 后续会处理Err(json_str): invalid override / no key / startup key revoked, 立即 abort
Sourcepub(crate) fn require_trading_scope_only(
&self,
tool: &'static str,
env: &str,
caller_key_rec: Option<&Arc<KeyRecord>>,
) -> Option<String>
pub(crate) fn require_trading_scope_only( &self, tool: &'static str, env: &str, caller_key_rec: Option<&Arc<KeyRecord>>, ) -> Option<String>
codex round 2 F1 (P2) v1.4.105: trade write 路径 早期 trade-scope
校验 — 在 client_or_err + resolve_acc_id_with_card_num 之前.
与 require_trading (full ctx body-aware) 区别:
require_trading: 完整 scope + acc_id whitelist + market/symbol/value- rate gate (最终 gate, 在 resolve 之后).
require_trading_scope_only: 只 verify caller key 含trade:real或trade:simulatescope. 不检查 acc_id / market / symbol / value (这些 final gate 仍由require_trading后做).
目标: 防 valid 但非-trade key (e.g. qot:read only) 触发 daemon
GetAccList + card_num resolution → 探测 not-found / ambiguous /
existence timing & messages, 之后才被 final require_trading 拒绝.
早期 scope check 让此类 key 在 resolve 之前 fail-closed.
不替代 require_trading — 只前置一个轻量 scope guard. 后续 final
gate (含 ctx) 仍跑.
Source§impl FutuServer
impl FutuServer
async fn futu_get_option_quote_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_strategy_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_strategy_analysis_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_strategy_spread_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_combo_max_trd_qtys_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_place_combo_order_impl( &self, __arg1: Parameters<ComboOrderProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_option_quote_tool_attr() -> Tool
fn futu_get_option_quote( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_strategy_tool_attr() -> Tool
fn futu_get_option_strategy( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_strategy_analysis_tool_attr() -> Tool
fn futu_get_option_strategy_analysis( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_strategy_spread_tool_attr() -> Tool
fn futu_get_option_strategy_spread( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_combo_max_trd_qtys_tool_attr() -> Tool
fn futu_get_combo_max_trd_qtys( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_place_combo_order_tool_attr() -> Tool
fn futu_place_combo_order( &self, parameters: Parameters<ComboOrderProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_combo_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_indicator_list_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_indicator_list_tool_attr() -> Tool
fn futu_get_indicator_list( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_indicator_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_quote_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_snapshot_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_kline_impl( &self, __arg1: Parameters<KLineReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_orderbook_impl( &self, __arg1: Parameters<OrderBookReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ticker_impl( &self, __arg1: Parameters<TickerReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_rt_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_static_impl( &self, __arg1: Parameters<SymbolListReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_broker_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_list_plates_impl( &self, __arg1: Parameters<PlateListReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_plate_stocks_impl( &self, __arg1: Parameters<PlateStocksReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_snapshot_tool_attr() -> Tool
fn futu_get_snapshot( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_quote_tool_attr() -> Tool
fn futu_get_quote( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_kline_tool_attr() -> Tool
fn futu_get_kline( &self, parameters: Parameters<KLineReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ticker_tool_attr() -> Tool
fn futu_get_ticker( &self, parameters: Parameters<TickerReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_orderbook_tool_attr() -> Tool
fn futu_get_orderbook( &self, parameters: Parameters<OrderBookReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_rt_tool_attr() -> Tool
fn futu_get_rt( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_broker_tool_attr() -> Tool
fn futu_get_broker( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_static_tool_attr() -> Tool
fn futu_get_static( &self, parameters: Parameters<SymbolListReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_list_plates_tool_attr() -> Tool
fn futu_list_plates( &self, parameters: Parameters<PlateListReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_plate_stocks_tool_attr() -> Tool
fn futu_plate_stocks( &self, parameters: Parameters<PlateStocksReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_market_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_option_market_statistic_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_underlying_his_statistic_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_underlying_overview_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_underlying_his_volatility_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_underlying_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_event_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_event_alert_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_set_option_event_alert_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_zero_dte_screener_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_zero_dte_contract_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_earnings_screener_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_seller_screener_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_option_market_statistic_tool_attr() -> Tool
fn futu_get_option_market_statistic( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_underlying_his_statistic_tool_attr() -> Tool
fn futu_get_option_underlying_his_statistic( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_underlying_overview_tool_attr() -> Tool
fn futu_get_option_underlying_overview( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_underlying_his_volatility_tool_attr() -> Tool
fn futu_get_option_underlying_his_volatility( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_underlying_rank_tool_attr() -> Tool
fn futu_get_option_underlying_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_rank_tool_attr() -> Tool
fn futu_get_option_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_event_tool_attr() -> Tool
fn futu_get_option_event( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_event_alert_tool_attr() -> Tool
fn futu_get_option_event_alert( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_set_option_event_alert_tool_attr() -> Tool
fn futu_set_option_event_alert( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_zero_dte_screener_tool_attr() -> Tool
fn futu_get_option_zero_dte_screener( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_zero_dte_contract_tool_attr() -> Tool
fn futu_get_option_zero_dte_contract( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_earnings_screener_tool_attr() -> Tool
fn futu_get_option_earnings_screener( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_seller_screener_tool_attr() -> Tool
fn futu_get_option_seller_screener( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_option_analytics_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_earnings_calendar_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_macro_indicator_list_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_macro_indicator_history_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_fed_watch_target_rate_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_fed_watch_dot_plot_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_earnings_beat_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_dividend_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_dividend_calendar_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_economic_calendar_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_us_pre_market_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_us_after_hours_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_us_overnight_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_top_movers_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_hot_list_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_short_selling_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_period_change_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_high_dividend_soe_rank_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_institution_list_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_institution_profile_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_institution_distribution_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_institution_holding_change_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_institution_holding_list_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ark_fund_holding_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ark_stock_dynamic_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ark_active_transaction_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_rating_change_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_industrial_chain_list_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_industrial_chain_detail_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_industrial_chain_by_plate_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_industrial_plate_info_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_industrial_plate_stock_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_heat_map_data_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_rise_fall_distribution_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_earnings_calendar_tool_attr() -> Tool
fn futu_get_earnings_calendar( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_macro_indicator_list_tool_attr() -> Tool
fn futu_get_macro_indicator_list( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_macro_indicator_history_tool_attr() -> Tool
fn futu_get_macro_indicator_history( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_fed_watch_target_rate_tool_attr() -> Tool
fn futu_get_fed_watch_target_rate( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_fed_watch_dot_plot_tool_attr() -> Tool
fn futu_get_fed_watch_dot_plot( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_earnings_beat_rank_tool_attr() -> Tool
fn futu_get_earnings_beat_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_dividend_rank_tool_attr() -> Tool
fn futu_get_dividend_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_dividend_calendar_tool_attr() -> Tool
fn futu_get_dividend_calendar( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_economic_calendar_tool_attr() -> Tool
fn futu_get_economic_calendar( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_us_pre_market_rank_tool_attr() -> Tool
fn futu_get_us_pre_market_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_us_after_hours_rank_tool_attr() -> Tool
fn futu_get_us_after_hours_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_us_overnight_rank_tool_attr() -> Tool
fn futu_get_us_overnight_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_top_movers_rank_tool_attr() -> Tool
fn futu_get_top_movers_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_hot_list_tool_attr() -> Tool
fn futu_get_hot_list( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_short_selling_rank_tool_attr() -> Tool
fn futu_get_short_selling_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_period_change_rank_tool_attr() -> Tool
fn futu_get_period_change_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_high_dividend_soe_rank_tool_attr() -> Tool
fn futu_get_high_dividend_soe_rank( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_institution_list_tool_attr() -> Tool
fn futu_get_institution_list( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_institution_profile_tool_attr() -> Tool
fn futu_get_institution_profile( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_institution_distribution_tool_attr() -> Tool
fn futu_get_institution_distribution( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_institution_holding_change_tool_attr() -> Tool
fn futu_get_institution_holding_change( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_institution_holding_list_tool_attr() -> Tool
fn futu_get_institution_holding_list( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ark_fund_holding_tool_attr() -> Tool
fn futu_get_ark_fund_holding( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ark_stock_dynamic_tool_attr() -> Tool
fn futu_get_ark_stock_dynamic( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ark_active_transaction_tool_attr() -> Tool
fn futu_get_ark_active_transaction( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_rating_change_tool_attr() -> Tool
fn futu_get_rating_change( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_industrial_chain_list_tool_attr() -> Tool
fn futu_get_industrial_chain_list( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_industrial_chain_detail_tool_attr() -> Tool
fn futu_get_industrial_chain_detail( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_industrial_chain_by_plate_tool_attr() -> Tool
fn futu_get_industrial_chain_by_plate( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_industrial_plate_info_tool_attr() -> Tool
fn futu_get_industrial_plate_info( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_industrial_plate_stock_tool_attr() -> Tool
fn futu_get_industrial_plate_stock( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_heat_map_data_tool_attr() -> Tool
fn futu_get_heat_map_data( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_rise_fall_distribution_tool_attr() -> Tool
fn futu_get_rise_fall_distribution( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_qot_3401_plus_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_capital_flow_impl( &self, __arg1: Parameters<CapitalFlowReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_capital_distribution_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_company_profile_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_company_executives_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_company_executive_background_impl( &self, __arg1: Parameters<CompanyExecutiveBackgroundReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_market_state_impl( &self, __arg1: Parameters<MarketStateReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_history_kline_impl( &self, __arg1: Parameters<HistoryKLineReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_owner_plate_impl( &self, __arg1: Parameters<SymbolListReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_reference_impl( &self, __arg1: Parameters<ReferenceReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_chain_impl( &self, __arg1: Parameters<OptionChainReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_warrant_impl( &self, __arg1: Parameters<WarrantReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ipo_list_impl( &self, __arg1: Parameters<IpoListReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ipo_calendar_impl( &self, __arg1: Parameters<IpoCalendarReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_future_info_impl( &self, __arg1: Parameters<FutureInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_user_security_group_impl( &self, __arg1: Parameters<UserSecurityGroupReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_stock_filter_impl( &self, __arg1: Parameters<StockFilterReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_trading_days_impl( &self, __arg1: Parameters<TradingDaysReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_rehab_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_suspend_impl( &self, __arg1: Parameters<SuspendReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_user_security_impl( &self, __arg1: Parameters<UserSecurityReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_global_state_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_user_info_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_quote_rights_impl( &self, __arg1: Parameters<QuoteRightsReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_delay_statistics_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_token_state_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_risk_free_rate_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_spread_table_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ticker_statistic_impl( &self, __arg1: Parameters<TickerStatisticReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_ticker_statistic_detail_impl( &self, __arg1: Parameters<TickerStatisticDetailReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_history_kl_quota_impl( &self, __arg1: Parameters<HistoryKlQuotaReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_holding_change_impl( &self, __arg1: Parameters<HoldingChangeReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_modify_user_security_impl( &self, __arg1: Parameters<ModifyUserSecurityReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_code_change_impl( &self, __arg1: Parameters<CodeChangeReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_volatility_impl( &self, __arg1: Parameters<OptionVolatilityReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_exercise_probability_impl( &self, __arg1: Parameters<OptionExerciseProbabilityReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_global_state_tool_attr() -> Tool
fn futu_get_global_state( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_history_kline_tool_attr() -> Tool
fn futu_get_history_kline( &self, parameters: Parameters<HistoryKLineReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_history_kl_quota_tool_attr() -> Tool
fn futu_get_history_kl_quota( &self, parameters: Parameters<HistoryKlQuotaReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_rehab_tool_attr() -> Tool
fn futu_get_rehab( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_suspend_tool_attr() -> Tool
fn futu_get_suspend( &self, parameters: Parameters<SuspendReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_market_state_tool_attr() -> Tool
fn futu_get_market_state( &self, parameters: Parameters<MarketStateReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_capital_flow_tool_attr() -> Tool
fn futu_get_capital_flow( &self, parameters: Parameters<CapitalFlowReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_chain_tool_attr() -> Tool
fn futu_get_option_chain( &self, parameters: Parameters<OptionChainReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_warrant_tool_attr() -> Tool
fn futu_get_warrant( &self, parameters: Parameters<WarrantReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_owner_plate_tool_attr() -> Tool
fn futu_get_owner_plate( &self, parameters: Parameters<SymbolListReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_holding_change_tool_attr() -> Tool
fn futu_get_holding_change( &self, parameters: Parameters<HoldingChangeReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_stock_filter_tool_attr() -> Tool
fn futu_get_stock_filter( &self, parameters: Parameters<StockFilterReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ipo_list_tool_attr() -> Tool
fn futu_get_ipo_list( &self, parameters: Parameters<IpoListReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_future_info_tool_attr() -> Tool
fn futu_get_future_info( &self, parameters: Parameters<FutureInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_reference_tool_attr() -> Tool
fn futu_get_reference( &self, parameters: Parameters<ReferenceReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_user_security_tool_attr() -> Tool
fn futu_get_user_security( &self, parameters: Parameters<UserSecurityReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_code_change_tool_attr() -> Tool
fn futu_get_code_change( &self, parameters: Parameters<CodeChangeReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_modify_user_security_tool_attr() -> Tool
fn futu_modify_user_security( &self, parameters: Parameters<ModifyUserSecurityReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_trading_days_tool_attr() -> Tool
fn futu_get_trading_days( &self, parameters: Parameters<TradingDaysReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_user_security_group_tool_attr() -> Tool
fn futu_get_user_security_group( &self, parameters: Parameters<UserSecurityGroupReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_user_info_tool_attr() -> Tool
fn futu_get_user_info( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_quote_rights_tool_attr() -> Tool
fn futu_get_quote_rights( &self, parameters: Parameters<QuoteRightsReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_delay_statistics_tool_attr() -> Tool
fn futu_get_delay_statistics( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_risk_free_rate_tool_attr() -> Tool
fn futu_get_risk_free_rate( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_spread_table_tool_attr() -> Tool
fn futu_get_spread_table( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ticker_statistic_tool_attr() -> Tool
fn futu_get_ticker_statistic( &self, parameters: Parameters<TickerStatisticReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ticker_statistic_detail_tool_attr() -> Tool
fn futu_get_ticker_statistic_detail( &self, parameters: Parameters<TickerStatisticDetailReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_token_state_tool_attr() -> Tool
fn futu_get_token_state( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_capital_distribution_tool_attr() -> Tool
fn futu_get_capital_distribution( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_ipo_calendar_tool_attr() -> Tool
fn futu_get_ipo_calendar( &self, parameters: Parameters<IpoCalendarReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_company_profile_tool_attr() -> Tool
fn futu_get_company_profile( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_company_executives_tool_attr() -> Tool
fn futu_get_company_executives( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_company_executive_background_tool_attr() -> Tool
fn futu_get_company_executive_background( &self, parameters: Parameters<CompanyExecutiveBackgroundReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_volatility_tool_attr() -> Tool
fn futu_get_option_volatility( &self, parameters: Parameters<OptionVolatilityReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_option_exercise_probability_tool_attr() -> Tool
fn futu_get_option_exercise_probability( &self, parameters: Parameters<OptionExerciseProbabilityReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_reference_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_daily_short_volume_impl( &self, __arg1: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_corporate_actions_buybacks_impl( &self, __arg1: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_corporate_actions_dividends_impl( &self, __arg1: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_corporate_actions_stock_splits_impl( &self, __arg1: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_short_interest_impl( &self, __arg1: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_top_ten_buy_sell_brokers_impl( &self, __arg1: Parameters<TopTenBuySellBrokersReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_corporate_actions_dividends_tool_attr() -> Tool
fn futu_get_corporate_actions_dividends( &self, parameters: Parameters<SymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_corporate_actions_buybacks_tool_attr() -> Tool
fn futu_get_corporate_actions_buybacks( &self, parameters: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_corporate_actions_stock_splits_tool_attr() -> Tool
fn futu_get_corporate_actions_stock_splits( &self, parameters: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_top_ten_buy_sell_brokers_tool_attr() -> Tool
fn futu_get_top_ten_buy_sell_brokers( &self, parameters: Parameters<TopTenBuySellBrokersReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_daily_short_volume_tool_attr() -> Tool
fn futu_get_daily_short_volume( &self, parameters: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_short_interest_tool_attr() -> Tool
fn futu_get_short_interest( &self, parameters: Parameters<ShortInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_reference_corporate_short_brokers_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_company_operational_efficiency_impl( &self, __arg1: Parameters<CompanyOperationalEfficiencyReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_financials_earnings_price_move_impl( &self, __arg1: Parameters<FinancialsEarningsPriceMoveReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_financials_earnings_price_history_impl( &self, __arg1: Parameters<FinancialsEarningsPriceHistoryReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_financial_calendar_impl( &self, __arg1: Parameters<FinancialCalendarReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_search_target_financial_calendar_impl( &self, __arg1: Parameters<TargetFinancialCalendarReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_financials_statements_impl( &self, __arg1: Parameters<FinancialsStatementsReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_financials_revenue_breakdown_impl( &self, __arg1: Parameters<FinancialsRevenueBreakdownReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_research_analyst_consensus_impl( &self, __arg1: Parameters<ResearchAnalystConsensusReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_research_rating_summary_impl( &self, __arg1: Parameters<ResearchRatingSummaryReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_research_morningstar_report_impl( &self, __arg1: Parameters<ResearchMorningstarReportReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_valuation_detail_impl( &self, __arg1: Parameters<ValuationDetailReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_valuation_plate_stock_list_impl( &self, __arg1: Parameters<ValuationPlateStockListReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_financial_calendar_tool_attr() -> Tool
fn futu_get_financial_calendar( &self, parameters: Parameters<FinancialCalendarReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_search_target_financial_calendar_tool_attr() -> Tool
fn futu_search_target_financial_calendar( &self, parameters: Parameters<TargetFinancialCalendarReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_financials_earnings_price_move_tool_attr() -> Tool
fn futu_get_financials_earnings_price_move( &self, parameters: Parameters<FinancialsEarningsPriceMoveReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_financials_earnings_price_history_tool_attr() -> Tool
fn futu_get_financials_earnings_price_history( &self, parameters: Parameters<FinancialsEarningsPriceHistoryReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_financials_statements_tool_attr() -> Tool
fn futu_get_financials_statements( &self, parameters: Parameters<FinancialsStatementsReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_financials_revenue_breakdown_tool_attr() -> Tool
fn futu_get_financials_revenue_breakdown( &self, parameters: Parameters<FinancialsRevenueBreakdownReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_research_analyst_consensus_tool_attr() -> Tool
fn futu_get_research_analyst_consensus( &self, parameters: Parameters<ResearchAnalystConsensusReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_research_rating_summary_tool_attr() -> Tool
fn futu_get_research_rating_summary( &self, parameters: Parameters<ResearchRatingSummaryReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_research_morningstar_report_tool_attr() -> Tool
fn futu_get_research_morningstar_report( &self, parameters: Parameters<ResearchMorningstarReportReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_valuation_detail_tool_attr() -> Tool
fn futu_get_valuation_detail( &self, parameters: Parameters<ValuationDetailReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_valuation_plate_stock_list_tool_attr() -> Tool
fn futu_get_valuation_plate_stock_list( &self, parameters: Parameters<ValuationPlateStockListReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_company_operational_efficiency_tool_attr() -> Tool
fn futu_get_company_operational_efficiency( &self, parameters: Parameters<CompanyOperationalEfficiencyReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_reference_f10_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_set_price_reminder_impl( &self, __arg1: Parameters<SetPriceReminderReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_price_reminder_impl( &self, __arg1: Parameters<GetPriceReminderReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_option_expiration_date_impl( &self, __arg1: Parameters<OptionExpirationDateReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_option_expiration_date_tool_attr() -> Tool
fn futu_get_option_expiration_date( &self, parameters: Parameters<OptionExpirationDateReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_set_price_reminder_tool_attr() -> Tool
fn futu_set_price_reminder( &self, parameters: Parameters<SetPriceReminderReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_price_reminder_tool_attr() -> Tool
fn futu_get_price_reminder( &self, parameters: Parameters<GetPriceReminderReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_reference_price_reminder_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_stock_screen_impl( &self, __arg1: Parameters<StockScreenReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_option_screen_impl( &self, __arg1: Parameters<OptionScreenReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_warrant_screen_impl( &self, __arg1: Parameters<WarrantScreenReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_technical_unusual_impl( &self, __arg1: Parameters<TechnicalUnusualReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_financial_unusual_impl( &self, __arg1: Parameters<FinancialUnusualReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_derivative_unusual_impl( &self, __arg1: Parameters<DerivativeUnusualReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_stock_screen_tool_attr() -> Tool
fn futu_stock_screen( &self, parameters: Parameters<StockScreenReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_option_screen_tool_attr() -> Tool
fn futu_option_screen( &self, parameters: Parameters<OptionScreenReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_warrant_screen_tool_attr() -> Tool
fn futu_warrant_screen( &self, parameters: Parameters<WarrantScreenReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_technical_unusual_tool_attr() -> Tool
fn futu_get_technical_unusual( &self, parameters: Parameters<TechnicalUnusualReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_financial_unusual_tool_attr() -> Tool
fn futu_get_financial_unusual( &self, parameters: Parameters<FinancialUnusualReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_derivative_unusual_tool_attr() -> Tool
fn futu_get_derivative_unusual( &self, parameters: Parameters<DerivativeUnusualReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_reference_screen_unusual_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_get_insider_holder_list_impl( &self, __arg1: Parameters<InsiderHolderListReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_insider_trade_list_impl( &self, __arg1: Parameters<InsiderTradeListReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_get_insider_holder_list_tool_attr() -> Tool
fn futu_get_insider_holder_list( &self, parameters: Parameters<InsiderHolderListReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_insider_trade_list_tool_attr() -> Tool
fn futu_get_insider_trade_list( &self, parameters: Parameters<InsiderTradeListReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
Source§impl FutuServer
impl FutuServer
async fn futu_search_quote_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_search_news_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_search_quote_tool_attr() -> Tool
fn futu_search_quote( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_search_news_tool_attr() -> Tool
fn futu_search_news( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_search_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_query_subscription_impl( &self, __arg1: Parameters<QuerySubscriptionReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_used_quota_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
Sourceasync fn futu_subscribe_impl(
&self,
__arg1: Parameters<SubscribeReq>,
req_ctx: RequestContext<RoleServer>,
) -> Result<String, String>
async fn futu_subscribe_impl( &self, __arg1: Parameters<SubscribeReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
v1.4.74 A1 BUG-011 fix: 加 futu_subscribe 补齐 MCP 对称性。
MCP 之前有 futu_unsubscribe / futu_sub_acc_push / futu_unsub_acc_push
/ futu_query_subscription / futu_push_subscriber_info 但缺
futu_subscribe 本身 → API 对称性被打破(“能取消但不能订阅”)。
架构:本 tool 触发 gateway 层订阅(CMD 3001 QOT_SUB),不返 push stream
本身。Push 数据通过 SSE notification 走(v1.4.58 MCP SSE basics),
客户端用 futu_push_subscriber_info 查询订阅状态。
对齐 Python SDK OpenQuoteContext.subscribe。
async fn futu_unsubscribe_impl( &self, __arg1: Parameters<UnsubscribeReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_sub_acc_push_impl( &self, __arg1: Parameters<SubAccPushReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_unsub_acc_push_impl( &self, __arg1: Parameters<UnsubAccPushReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_push_subscriber_info_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_subscribe_tool_attr() -> Tool
fn futu_subscribe( &self, parameters: Parameters<SubscribeReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_used_quota_tool_attr() -> Tool
fn futu_get_used_quota( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_query_subscription_tool_attr() -> Tool
fn futu_query_subscription( &self, parameters: Parameters<QuerySubscriptionReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_sub_acc_push_tool_attr() -> Tool
fn futu_sub_acc_push( &self, parameters: Parameters<SubAccPushReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_push_subscriber_info_tool_attr() -> Tool
fn futu_push_subscriber_info( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_unsubscribe_tool_attr() -> Tool
fn futu_unsubscribe( &self, parameters: Parameters<UnsubscribeReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_unsub_acc_push_tool_attr() -> Tool
fn futu_unsub_acc_push( &self, parameters: Parameters<UnsubAccPushReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_subscription_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_ping_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_verification_impl( &self, __arg1: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_verification_tool_attr() -> Tool
fn futu_verification( &self, parameters: Parameters<ProtoJsonReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_ping_tool_attr() -> Tool
fn futu_ping( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_system_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_list_accounts_impl( &self, __arg1: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_funds_impl( &self, __arg1: Parameters<TrdAccReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_positions_impl( &self, __arg1: Parameters<PositionReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_orders_impl( &self, __arg1: Parameters<TrdAccReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_deals_impl( &self, __arg1: Parameters<TrdAccReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_max_trd_qtys_impl( &self, __arg1: Parameters<MaxTrdQtysReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_order_fee_impl( &self, __arg1: Parameters<OrderFeeReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_margin_ratio_impl( &self, __arg1: Parameters<MarginRatioReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_history_orders_impl( &self, __arg1: Parameters<HistoryQueryReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_history_deals_impl( &self, __arg1: Parameters<HistoryQueryReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_acc_cash_flow_impl( &self, __arg1: Parameters<AccCashFlowReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
Sourceasync fn futu_get_flow_summary_impl(
&self,
__arg1: Parameters<AccCashFlowReq>,
req_ctx: RequestContext<RoleServer>,
) -> Result<String, String>
async fn futu_get_flow_summary_impl( &self, __arg1: Parameters<AccCashFlowReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
v1.4.73 BUG-002 fix: MCP alias futu_get_flow_summary 指向同 handler。
external reviewer v1.4.71 验收报告的 AI tester 列此为 P0(“MCP 58 工具无对应 futu_get_flow_summary,
有 margin_ratio / order_fee 同类查询”)。审查后发现:REST 侧两个
endpoint 并存 /api/flow-summary (原) + /api/acc-cash-flow (v1.4.51 alias),
MCP 只有 futu_get_acc_cash_flow (v1.4.30 P2 实装)。
用户期待 MCP 与 REST /api/flow-summary 同名的 tool,这是 UX 对称问题。
本 alias 保持与主 tool futu_get_acc_cash_flow 语义完全一致,
参数结构 + handler 调用 + scope 登记全部共享。
async fn futu_get_cash_log_impl( &self, __arg1: Parameters<CashLogReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_cash_detail_impl( &self, __arg1: Parameters<CashDetailReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_biz_group_impl( &self, __arg1: Parameters<BizGroupReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_margin_info_impl( &self, __arg1: Parameters<MarginInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_account_flag_impl( &self, __arg1: Parameters<AccountFlagReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_bond_total_asset_impl( &self, __arg1: Parameters<BondAccountReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_bond_single_asset_impl( &self, __arg1: Parameters<BondSymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_bond_position_list_impl( &self, __arg1: Parameters<BondAccountReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_bond_answer_state_impl( &self, __arg1: Parameters<BondSymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_get_bond_trade_reminder_impl( &self, __arg1: Parameters<BondSymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_list_accounts_tool_attr() -> Tool
fn futu_list_accounts( &self, parameters: Parameters<NoArgs>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_funds_tool_attr() -> Tool
fn futu_get_funds( &self, parameters: Parameters<TrdAccReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_positions_tool_attr() -> Tool
fn futu_get_positions( &self, parameters: Parameters<PositionReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_orders_tool_attr() -> Tool
fn futu_get_orders( &self, parameters: Parameters<TrdAccReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_deals_tool_attr() -> Tool
fn futu_get_deals( &self, parameters: Parameters<TrdAccReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_margin_ratio_tool_attr() -> Tool
fn futu_get_margin_ratio( &self, parameters: Parameters<MarginRatioReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_order_fee_tool_attr() -> Tool
fn futu_get_order_fee( &self, parameters: Parameters<OrderFeeReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_max_trd_qtys_tool_attr() -> Tool
fn futu_get_max_trd_qtys( &self, parameters: Parameters<MaxTrdQtysReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_history_orders_tool_attr() -> Tool
fn futu_get_history_orders( &self, parameters: Parameters<HistoryQueryReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_history_deals_tool_attr() -> Tool
fn futu_get_history_deals( &self, parameters: Parameters<HistoryQueryReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_flow_summary_tool_attr() -> Tool
fn futu_get_flow_summary( &self, parameters: Parameters<AccCashFlowReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_cash_log_tool_attr() -> Tool
fn futu_get_cash_log( &self, parameters: Parameters<CashLogReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_cash_detail_tool_attr() -> Tool
fn futu_get_cash_detail( &self, parameters: Parameters<CashDetailReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_biz_group_tool_attr() -> Tool
fn futu_get_biz_group( &self, parameters: Parameters<BizGroupReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_margin_info_tool_attr() -> Tool
fn futu_get_margin_info( &self, parameters: Parameters<MarginInfoReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_account_flag_tool_attr() -> Tool
fn futu_get_account_flag( &self, parameters: Parameters<AccountFlagReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_bond_total_asset_tool_attr() -> Tool
fn futu_get_bond_total_asset( &self, parameters: Parameters<BondAccountReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_bond_single_asset_tool_attr() -> Tool
fn futu_get_bond_single_asset( &self, parameters: Parameters<BondSymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_bond_position_list_tool_attr() -> Tool
fn futu_get_bond_position_list( &self, parameters: Parameters<BondAccountReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_bond_answer_state_tool_attr() -> Tool
fn futu_get_bond_answer_state( &self, parameters: Parameters<BondSymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_bond_trade_reminder_tool_attr() -> Tool
fn futu_get_bond_trade_reminder( &self, parameters: Parameters<BondSymbolReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_get_acc_cash_flow_tool_attr() -> Tool
fn futu_get_acc_cash_flow( &self, parameters: Parameters<AccCashFlowReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_trade_read_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
async fn futu_unlock_trade_impl( &self, __arg1: Parameters<UnlockTradeReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_unlock_trade_tool_attr() -> Tool
fn futu_unlock_trade( &self, parameters: Parameters<UnlockTradeReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_trade_unlock_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
fn require_place_order_limit( &self, req: &PlaceOrderReq, resolved_acc_id: u64, override_key: Option<&str>, ) -> Option<String>
async fn futu_place_order_impl( &self, __arg1: Parameters<PlaceOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_modify_order_impl( &self, __arg1: Parameters<ModifyOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_cancel_order_impl( &self, __arg1: Parameters<CancelOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_reconfirm_order_impl( &self, __arg1: Parameters<ReconfirmOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
async fn futu_cancel_all_order_impl( &self, __arg1: Parameters<CancelAllOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Result<String, String>
§impl FutuServer
impl FutuServer
fn futu_place_order_tool_attr() -> Tool
fn futu_place_order( &self, parameters: Parameters<PlaceOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_modify_order_tool_attr() -> Tool
fn futu_modify_order( &self, parameters: Parameters<ModifyOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_reconfirm_order_tool_attr() -> Tool
fn futu_reconfirm_order( &self, parameters: Parameters<ReconfirmOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_cancel_all_order_tool_attr() -> Tool
fn futu_cancel_all_order( &self, parameters: Parameters<CancelAllOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
fn futu_cancel_order_tool_attr() -> Tool
fn futu_cancel_order( &self, parameters: Parameters<CancelOrderReq>, req_ctx: RequestContext<RoleServer>, ) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + '_>>
pub(super) fn generated_trade_write_tool_router() -> ToolRouter<Self>
Source§impl FutuServer
impl FutuServer
pub fn new(state: ServerState) -> Self
pub(crate) fn legacy_push_delivery( &self, peer: Peer<RoleServer>, ) -> PushDeliveryTarget
pub(crate) async fn register_legacy_push_subscriber( &self, delivery: PushDeliveryTarget, acc_ids: HashSet<u64>, owner_key_id: Option<String>, allowed_acc_ids_snapshot: Option<HashSet<u64>>, allowed_markets_snapshot: Option<HashSet<String>>, ) -> Result<String, String>
Source§impl FutuServer
impl FutuServer
pub(crate) fn tool_router() -> ToolRouter<Self>
Trait Implementations§
Source§impl Clone for FutuServer
impl Clone for FutuServer
Source§fn clone(&self) -> FutuServer
fn clone(&self) -> FutuServer
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ServerHandler for FutuServer
impl ServerHandler for FutuServer
fn get_info(&self) -> ServerInfo
Source§fn supported_protocol_versions(&self) -> Cow<'static, [ProtocolVersion]>
fn supported_protocol_versions(&self) -> Cow<'static, [ProtocolVersion]>
async fn initialize( &self, request: InitializeRequestParams, context: RequestContext<RoleServer>, ) -> Result<InitializeResult, ErrorData>
Source§async fn discover(
&self,
context: RequestContext<RoleServer>,
) -> Result<DiscoverResult, ErrorData>
async fn discover( &self, context: RequestContext<RoleServer>, ) -> Result<DiscoverResult, ErrorData>
async fn set_level( &self, request: SetLevelRequestParams, context: RequestContext<RoleServer>, ) -> Result<(), ErrorData>
async fn list_prompts( &self, _request: Option<PaginatedRequestParams>, _context: RequestContext<RoleServer>, ) -> Result<ListPromptsResult, ErrorData>
async fn list_resources( &self, _request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListResourcesResult, ErrorData>
async fn list_resource_templates( &self, _request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListResourceTemplatesResult, ErrorData>
async fn read_resource( &self, request: ReadResourceRequestParams, context: RequestContext<RoleServer>, ) -> Result<ReadResourceResponse, ErrorData>
Source§fn accepted_subscription_filter(
&self,
requested: &SubscriptionFilter,
) -> Option<SubscriptionFilter>
fn accepted_subscription_filter( &self, requested: &SubscriptionFilter, ) -> Option<SubscriptionFilter>
Source§async fn listen(&self, context: SubscriptionContext) -> Result<(), ErrorData>
async fn listen(&self, context: SubscriptionContext) -> Result<(), ErrorData>
Source§async fn call_tool(
&self,
request: CallToolRequestParams,
context: RequestContext<RoleServer>,
) -> Result<CallToolResponse, ErrorData>
async fn call_tool( &self, request: CallToolRequestParams, context: RequestContext<RoleServer>, ) -> Result<CallToolResponse, ErrorData>
tools/call request from a client. Read moreasync fn list_tools( &self, _request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> Result<ListToolsResult, ErrorData>
fn ping( &self, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn complete( &self, request: CompleteRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CompleteResult, ErrorData>> + MaybeSendFuture
fn get_prompt( &self, request: GetPromptRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetPromptResponse, ErrorData>> + MaybeSendFuture
§fn subscribe(
&self,
request: SubscribeRequestParams,
context: RequestContext<RoleServer>,
) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn subscribe( &self, request: SubscribeRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
resources/subscribe is legacy-only; implement accepted_subscription_filter and listen for protocol version 2026-07-28
§fn unsubscribe(
&self,
request: UnsubscribeRequestParams,
context: RequestContext<RoleServer>,
) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn unsubscribe( &self, request: UnsubscribeRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
resources/unsubscribe is legacy-only; subscriptions/listen is cancelled through its request lifecycle
fn on_custom_request( &self, request: CustomRequest, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CustomResult, ErrorData>> + MaybeSendFuture
fn on_cancelled( &self, notification: CancelledNotificationParam, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_progress( &self, notification: ProgressNotificationParam, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_initialized( &self, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_roots_list_changed( &self, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_custom_notification( &self, notification: CustomNotification, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
§fn get_task(
&self,
request: GetTaskParams,
context: RequestContext<RoleServer>,
) -> impl Future<Output = Result<GetTaskResult, ErrorData>> + MaybeSendFuture
fn get_task( &self, request: GetTaskParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetTaskResult, ErrorData>> + MaybeSendFuture
tasks/get: return the current [DetailedTask] state.§fn update_task(
&self,
request: UpdateTaskParams,
context: RequestContext<RoleServer>,
) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn update_task( &self, request: UpdateTaskParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
tasks/update: accept responses to outstanding in-task
input requests. Returns an empty acknowledgement on success.§fn cancel_task(
&self,
request: CancelTaskParams,
context: RequestContext<RoleServer>,
) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn cancel_task( &self, request: CancelTaskParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
tasks/cancel: cooperative cancellation. Returns an empty
acknowledgement; the task’s observable status may lag.Auto Trait Implementations§
impl !RefUnwindSafe for FutuServer
impl !UnwindSafe for FutuServer
impl Freeze for FutuServer
impl Send for FutuServer
impl Sync for FutuServer
impl Unpin for FutuServer
impl UnsafeUnpin for FutuServer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
fn handle_request( &self, request: <R as ServiceRole>::PeerReq, context: RequestContext<R>, ) -> Pin<Box<dyn Future<Output = Result<<R as ServiceRole>::Resp, ErrorData>> + Send + '_>>
fn handle_notification( &self, notification: <R as ServiceRole>::PeerNot, context: NotificationContext<R>, ) -> Pin<Box<dyn Future<Output = Result<(), ErrorData>> + Send + '_>>
fn get_info(&self) -> <R as ServiceRole>::Info
§fn supported_protocol_versions(&self) -> Cow<'static, [ProtocolVersion]>
fn supported_protocol_versions(&self) -> Cow<'static, [ProtocolVersion]>
Service::supported_protocol_versions].§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<H> Service<RoleServer> for Hwhere
H: ServerHandler,
impl<H> Service<RoleServer> for Hwhere
H: ServerHandler,
async fn handle_request( &self, request: <RoleServer as ServiceRole>::PeerReq, context: RequestContext<RoleServer>, ) -> Result<<RoleServer as ServiceRole>::Resp, ErrorData>
async fn handle_notification( &self, notification: <RoleServer as ServiceRole>::PeerNot, context: NotificationContext<RoleServer>, ) -> Result<(), ErrorData>
fn get_info(&self) -> <RoleServer as ServiceRole>::Info
§fn supported_protocol_versions(&self) -> Cow<'static, [ProtocolVersion]>
fn supported_protocol_versions(&self) -> Cow<'static, [ProtocolVersion]>
initialize
negotiation may agree to. Read more