Skip to main content

futu_core/
broker_discovery.rs

1//! Internal shared API — broker-discovery backend ret-code policy.
2//!
3//! Ref:
4//! - `FTLogin/Src/ftlogin/channel/impl/logger.cpp:1339`
5//! - `FTLogin/Src/ftlogin/channel/impl/logger.cpp:1525`
6//!
7//! C++ treats `ret_code` as required and only `0` proceeds to parse/apply the
8//! broker list for CMD9419 and CMD20176.
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub struct BrokerDiscoveryBackendReject {
12    ret_code: i32,
13}
14
15impl BrokerDiscoveryBackendReject {
16    pub const fn ret_code(self) -> i32 {
17        self.ret_code
18    }
19}
20
21pub fn ensure_broker_discovery_backend_success(
22    ret_code: Option<i32>,
23) -> std::result::Result<(), BrokerDiscoveryBackendReject> {
24    match ret_code {
25        Some(0) => Ok(()),
26        Some(ret_code) => Err(BrokerDiscoveryBackendReject { ret_code }),
27        None => Err(BrokerDiscoveryBackendReject { ret_code: -1 }),
28    }
29}