6.4.1 状态查询
状态查询接口用来获取以下信息:
- 判断本地是否安装aTrust客户端
- 用户登录状态
- 隧道状态
- 当前在线用户名
- 当前在线的服务器地址
接口定义
atrust_error_code ATRUST_API atrust_sync_query_status(atrust_status **data);
参数和返回值说明
参数名 | 类型 | 出参/入参 | 必须 | 说明 |
---|---|---|---|---|
返回值 | atrust_error_code | out | aTrust标准错误及回复码 |
示例代码
atrust_status *data = NULL;
atrust_error_code ec = atrust_sync_query_status(&data);
if (ec != atrust_error_code::OK) {
switch (ec) {
case atrust_error_code::OUT_PARAM_WRITE_ERROR:
// 出参无法写入!
return;
case atrust_error_code::ATRUST_CONNECT_ERROR:
// aTrust客户端连接失败!如果重试任然失败,请检查aTrustAgent进程是否正常运行。
return;
case atrust_error_code::ATRUST_CLIENT_NOT_INSTALL:
// 本地未安装aTrust客户端会返回该错误码
return;
// 未知的业务执行过程失败
default:
// 接口调用失败!请在atrust_code.h中检查错误码,或尝试重试。错误码:ec
return;
}
}
// 成功
// 状态查询成功!
// 用户状态:data->user_status
// 隧道状态:data->tunnel_status
if (data->user_status != ATRUST_USER_STATUS_OFFLINE && data->user_status != ATRUST_USER_STATUS_DISCONNECT) {
// 当前在线用户:data->online_username
// 服务器地址:data->online_sdpc_addr
// 服务器guid:data->online_sdpc_guid
}
// 释放内存
atrust_free(data);
data = nullptr;
补充说明
由于您的用户可能没有隧道资源,因此,在登录成功之后,可能隧道状态任然和登录前一样是隧道不可用。此时并不是异常状态。
通过状态查询接口的错误码返回值ATRUST_CLIENT_NOT_INSTALL(20003)可以判断本地是否安装了aTrust客户端
6.4.2 状态码
用户状态结构体
/**
* @brief 整体状态
*/
struct atrust_status {
atrust_user_status user_status; ///< 用户状态
atrust_tunnel_status tunnel_status; ///< 隧道状态
char online_username[ATRUST_LENGTH_COMMON_STATUS_DATA]; ///< 当前在线用户名
char online_sdpc_addr[ATRUST_LENGTH_URL]; ///< 当前在线服务器的地址
char online_sdpc_guid[ATRUST_LENGTH_COMMON_STATUS_DATA]; ///< 当前在线的服务器的GUID
};
用户当前登录状态取值
获取到用户当前状态之后,其中aturst_stuats结构中的user_status取值
/**
* @brief 登录状态
*/
enum atrust_user_status {
ATRUST_USER_STATUS_OFFLINE = 20100, ///< 用户处于注销状态,未登录
ATRUST_USER_STATUS_ONLINE, ///< 已有用户在线(不一定是当前用户)
ATRUST_USER_STATUS_CURRENT_ONLINE, ///< 当前用户在线当前SDPC
ATRUST_USER_STATUS_OTHER_ONLINE, ///< 其他用户在线,或已有用户登录了其他aTrust服务器
ATRUST_USER_STATUS_DISCONNECT, ///< 用户断线,连接不上sdpc
};
隧道状态码
获取到用户当前状态之后,其中aturst_stuats结构中的tunnel_status取值
/**
* @brief 隧道状态
*/
enum atrust_tunnel_status {
ATRUST_TUNNEL_STATUS_UNAVAILABLE = 0, ///< 隧道不可用
ATRUST_TUNNEL_STATUS_PREPARING, ///< 隧道启动中
ATRUST_TUNNEL_STATUS_AVAILABLE, ///< 隧道可用
};
6.4.3 错误码说明
错误码 | KEY | 描述 |
---|---|---|
0 | OK | 操作成功 |
20002 | ATRUST_CONNECT_ERROR | 本地aTrustAgent服务连接错误,可能aTrustAgent服务没有运行 |
20003 | ATRUST_CLIENT_NOT_INSTALL | 本地未安装aTrust客户端 |
完整错误码请参考aTrustSDK集成库中的aturst_code.h文件