客户端生命周期

创建 QuoteClient 和 TradeClient

explicit QuoteClient(const ClientConfig &cf, bool is_grab_permission = true)
explicit TradeClient(const ClientConfig &cf)

说明

创建行情或交易 HTTP 客户端。当前 QuoteClient 实现无条件调用 grab_quote_permission(),没有读取 is_grab_permission;该参数虽有默认值,但当前版本不能用于关闭抢占行为。

参数

参数名类型是否必填描述
cfconst ClientConfig&Yes已配置的开发者凭证;交易客户端还需要账户
is_grab_permissionboolNo头文件默认 true;当前实现忽略该值

返回

构造 QuoteClientTradeClient。两者不可复制或移动,因为继承的 TigerClient 删除了复制/移动操作。

示例

TIGER_API::ClientConfig config(false, U("your_config_directory_path"));
TIGER_API::QuoteClient quote_client(config);
TIGER_API::TradeClient trade_client(config);

创建推送客户端

static std::shared_ptr<IPushClient> IPushClient::create_push_client(
    const ClientConfig &client_config)

说明

使用配置副本创建异步推送客户端。返回的共享指针必须覆盖所有异步回调。

参数

参数名类型是否必填描述
client_configconst ClientConfig&Yes已通过校验的开发者、账户和 socket 配置

返回

std::shared_ptr<IPushClient>。创建对象不代表网络已连接。

示例

#include "tigerapi/client_config.h"
#include "tigerapi/push_client.h"

int main() {
    TIGER_API::ClientConfig config(false, U("your_config_directory_path"));
    auto client = TIGER_API::IPushClient::create_push_client(config);
    client->connect();
    client->disconnect();
}

获取配置

const ClientConfig& IPushClient::get_client_config() const

说明

返回客户端持有的只读配置引用。引用生命周期不超过客户端。

参数

无。

返回

const ClientConfig&,不可用于修改客户端配置。

示例

const TIGER_API::ClientConfig& active_config = client->get_client_config();
utility::ucout << active_config.account << std::endl;

建立连接

void IPushClient::connect()

说明

启动工作线程并异步连接。实际结果通过 set_connected_callbackset_inner_error_callbackset_error_callback 通知;无同步返回值。

参数

无。

返回

void。方法返回不表示握手成功。

示例

client->set_connected_callback([]() { std::cout << "connected\n"; });
client->connect();

断开连接

void IPushClient::disconnect()

说明

向工作线程异步提交断开操作。使用 set_disconnected_callback 观察完成,不要将方法返回视为网络连接已经关闭。

参数

无。

返回

void

示例

client->set_disconnected_callback([]() { std::cout << "disconnected\n"; });
client->disconnect();

刷新访问令牌

utility::string_t TigerClient::refresh_token()

说明

向服务端获取新 token,成功时持久化并更新线程安全配置;失败返回空字符串。query_token() 是保留的废弃别名。

参数

无。

返回

utility::string_t 新 token;失败为空字符串。

示例

TIGER_API::QuoteClient client(config);
const utility::string_t token = client.refresh_token();
if (token.empty()) {
    std::cerr << "token refresh failed\n";
}

刷新 token 兼容别名

utility::string_t TigerClient::query_token()

说明

refresh_token() 的废弃兼容别名。新代码应使用 refresh_token()

参数

无。

返回

utility::string_t 新 token;失败返回空字符串。

示例

const utility::string_t token = client.query_token(); // 仅兼容旧代码

启动自动刷新

bool TigerClient::start_token_refresh(int interval_seconds)

说明

按秒启动后台刷新。interval_seconds 必须为正;已有刷新线程时返回 false。客户端不可复制或移动,必须在销毁前保持有效。

参数

参数名类型是否必填描述
interval_secondsintYes正数刷新周期,单位秒

返回

bool;成功启动返回 true,已有刷新线程返回 false

示例

if (!client.start_token_refresh(3600)) {
    std::cerr << "refresh thread already running\n";
}

停止自动刷新

void TigerClient::stop_token_refresh()

说明

通知后台线程停止并等待退出。析构前会清理线程,但建议在业务关闭流程中显式调用。

参数

无。

返回

void

示例

client.stop_token_refresh();

ClientConfig 构造与配置

ClientConfig(bool sandbox_debug = false)
ClientConfig(utility::string_t tiger_id, utility::string_t private_key, utility::string_t account)
ClientConfig(utility::string_t tiger_id, utility::string_t private_key, utility::string_t account,
             bool sandbox_debug = false, utility::string_t lang = U("en_US"))
ClientConfig(bool sandbox_debug, const utility::string_t props_path)
ClientConfig(const ClientConfig& other)

说明

从默认值、显式凭证或 properties 路径创建配置。复制构造只复制配置和当前 token,不复制刷新线程;赋值和移动已删除。

参数

参数名类型是否必填描述
sandbox_debugboolNoSDK 默认 false
tiger_idutility::string_t条件必填显式凭证构造时必填
private_keyutility::string_t条件必填RSA 私钥;不得写入日志
accountutility::string_t条件必填交易账户;行情-only 用法可稍后配置
langutility::string_tNoSDK 默认 U("en_US")
props_pathconst utility::string_t条件必填properties 文件目录/路径
otherconst ClientConfig&条件必填被复制配置;复制时不得运行刷新线程

返回

构造 ClientConfig 对象。公共配置字段和默认值以 include/tigerapi/client_config.h 为准,包括 charset = U("UTF-8")sign_type = U("RSA")use_full_tick = false、发送/接收间隔 10000 毫秒。

示例

TIGER_API::ClientConfig config(
    U("tiger-id"), U("-----BEGIN PRIVATE KEY-----..."), U("account"),
    false, U("zh_CN"));

ClientConfig 校验方法

void ClientConfig::check() const
void ClientConfig::check_account() const

说明

check() 校验客户端请求所需配置;check_account() 额外校验交易账户。

参数

无。

返回

void;配置无效时抛出 SDK 异常,不返回 JSON。

示例

config.check();
config.check_account();

ClientConfig 端点访问方法

void ClientConfig::set_server_url(const utility::string_t& url)
void ClientConfig::set_socket_url(const utility::string_t& url)
void ClientConfig::set_socket_port(const utility::string_t& port)
void ClientConfig::set_server_public_key(const utility::string_t& key)
const utility::string_t& ClientConfig::get_server_url() const
const utility::string_t& ClientConfig::get_server_pub_key() const
const utility::string_t& ClientConfig::get_socket_url() const
const utility::string_t& ClientConfig::get_socket_port() const

说明

设置或读取 HTTP、socket 和服务端公钥配置。

参数

参数名类型是否必填描述
urlconst utility::string_t&Yes完整 HTTP 或 socket 主机地址
portconst utility::string_t&Yessocket 端口字符串
keyconst utility::string_t&Yes服务端 RSA 公钥

返回

setter 返回 void;getter 返回配置内字符串的 const 引用。

示例

config.set_server_url(U("https://openapi.tigerfintech.com/gateway"));
const auto& server_url = config.get_server_url();

ClientConfig token 方法

void ClientConfig::set_token(const utility::string_t& token)
utility::string_t ClientConfig::get_token() const
bool ClientConfig::start_token_refresh(int interval_seconds,
    std::function<utility::string_t()> fetch_fn)
void ClientConfig::stop_token_refresh()

说明

线程安全地设置/读取 token,或用调用方提供的获取函数管理后台刷新。通常优先使用 TigerClient::start_token_refresh(int),它已绑定 SDK 刷新请求。

参数

参数名类型是否必填描述
tokenconst utility::string_t&Yes新 token;不得记录到日志
interval_secondsintYes正数刷新周期,单位秒
fetch_fnstd::function callbackYes无参数并返回 utility::string_t 新 token

返回

get_token() 返回 token 副本;start_token_refresh 成功启动返回 true,已有线程返回 false;其余返回 void

示例

config.set_token(U("redacted-token"));
const utility::string_t token_copy = config.get_token();
const bool started = config.start_token_refresh(3600, []() {
    return utility::string_t{}; // 用应用自己的安全 token 获取逻辑替换
});
config.stop_token_refresh();

判断美国站点

bool ClientConfig::is_us()

说明

根据当前配置判断是否使用美国站点。

参数

无。

返回

bool

示例

if (config.is_us()) {
    std::cout << "US environment\n";
}

TigerClient 文档范围

用户生命周期 API 包括具体 QuoteClient/TradeClient 构造函数、公开 client_configrefresh_token()、废弃别名 query_token()start_token_refresh(int)stop_token_refresh()TigerClient(const ClientConfig&) 是基类构造细节,不建议直接实例化基类;具体客户端构造函数见本页。

以下 public 方法不作为面向用户的业务 API 单独记录:postgetsend_requestQuoteClient/TradeClient 的底层签名与 HTTP 调度原语;identifiers_to_options 是期权标识转换辅助函数。它们没有稳定的业务参数、权限或响应契约,直接使用会绕过类型化客户端方法。本次文档明确排除它们,但保留源码可见性。来源:tiger_client.h

ClientConfig 的权威声明见 client_config.h,推送生命周期声明见 push_client.h


Did this page help you?