6.4.1 状态查询

状态查询接口用来获取以下信息:

  1. 判断本地是否安装aTrust客户端
  2. 用户登录状态
  3. 隧道状态
  4. 当前在线用户名
  5. 当前在线的服务器地址

接口定义

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;

补充说明

  1. 由于您的用户可能没有隧道资源,因此,在登录成功之后,可能隧道状态任然和登录前一样是隧道不可用。此时并不是异常状态。

  2. 通过状态查询接口的错误码返回值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文件

深信服科技 all right reserved,powered by Gitbook本文档更新于: 2024-07-25 14:08

results matching ""

    No results matching ""