IAgoraFpaProxyService
类包含以下成员方法。
extern "C" AGORA_FPA_PROXY_API agora::fpa::service::IAgoraFpaProxyService*
GetAgoraFpaProxyService();
IAgoraFpaProxyService
类 的构造方法。获取 IAgoraFpaProxyService
对象。
一个 IAgoraFpaProxyService
对象。
virtual int SetObserver(IAgoraFpaProxyServiceObserver* observer) = 0;
注册 FPA 服务事件监听。
参数 | 说明 |
---|---|
observer | IAgoraFpaProxyServiceObserver 对象。 |
无
virtual int Start(const FpaProxyServiceConfig& config) = 0;
开启 FPA 服务。
参数 | 说明 |
---|---|
config | FPA 服务配置。详见 FpaProxyServiceConfig 。 |
返回值 | 说明 |
---|---|
0 | 开启服务成功。 |
<0 | 开启服务失败。详见错误码。 |
virtual int Stop() = 0;
关闭 FPA 服务。
virtual int GetHttpProxyPort(unsigned short& port) = 0;
获取当前使用的 HTTP 本地代理端口。
参数 | 说明 |
---|---|
port | HTTP 本地代理端口。 |
返回值 | 说明 |
---|---|
= 0 | 调用成功。 |
<0 | 调用失败。详见错误码。 |
virtual int GetTransparentProxyPort(unsigned short& proxy_port, const FpaChainInfo& info) = 0;
获取当前使用的透明代理端口。
参数 | 说明 |
---|---|
proxy_port | TCP 透明代理端口。 |
info | 加速通道相关信息。详见 FpaChainInfo 。 |
返回值 | 说明 |
---|---|
= 0 | 调用成功。 |
< 0 | 调用失败。详见错误码。 |
virtual int SetParameters(const char* param) = 0;
通过 JSON 配置 SDK 提供技术预览或特别定制功能。
JSON 选项默认不公开。
virtual int SetOrUpdateHttpProxyChainConfig(const FpaHttpProxyChainConfig& config) = 0;
设置或更新 HTTP 本地代理的加速 IP/域名和对应的 chain ID 映射列表。
参数 | 说明 |
---|---|
config | 加速 IP/域名和对应的 chain ID 映射列表。详见 FpaHttpProxyChainConfig 。 |
返回值 | 说明 |
---|---|
0 | 调用成功。 |
< 0 | 调用失败。详见错误码。 |
virtual int GetDiagnosisInfo(FpaProxyServiceDiagnosisInfo& info) = 0;
获取问题诊断用的信息。
参数 | 说明 |
---|---|
info | FpaProxyServiceDiagnosisInfo 对象。 |
返回值 | 说明 |
---|---|
0 | 调用成功。 |
< 0 | 调用失败。详见错误码。 |
extern "C" AGORA_FPA_PROXY_API const char* GetAgoraFpaProxyServiceSdkVersion();
获取 SDK 的版本号。
无
SDK 的版本号。
extern "C" AGORA_FPA_PROXY_API const char* GetAgoraFpaProxyServiceSdkBuildInfo();
获取 SDK 的 build 信息。
无
SDK 的 build 信息。
IAgoraFpaProxyServiceObserver
类包含以下回调。
virtual void onConnected(const FpaProxyConnectionInfo& info) = 0;
在成功连接 FPA 代理时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
virtual void onAccelerationSuccess(const FpaProxyConnectionInfo& info) = 0;
在 FPA 代理加速成功时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
public virtual void OnConnectionFailed(FpaProxyConnectionInfo info, FPA_FAILED_REASON_CODE reason) { }
在连接 FPA 代理失败且连接未回退时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FPA_FAILED_REASON_CODE 枚举。 |
virtual void onDisconnectedAndFallback(const FpaProxyConnectionInfo& info,
FPA_FAILED_REASON_CODE reason) = 0;
在连接 FPA 代理失败且回退至本地连接时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FPA_FAILED_REASON_CODE 枚举。 |
加速链路的相关信息。
struct AGORA_FPA_PROXY_API FpaChainInfo {
FpaChainInfo() : chain_id(0), enable_fallback(true), port(0) {
memset(address, 0, sizeof(address));
}
char address[MAX_STR_LEN];
int port;
int chain_id;
bool enable_fallback;
};
参数 | 说明 |
---|---|
address | 目标 源站 的 IP 或域名。 |
port | 目标 源站 的端口。 |
chain_id | 加速通道的 chain ID。 |
enable_fallback | 对于此加速通道,FPA 连接失败时是否回退到本地连接。
|
FpaChainInfo
对象。
FPA 服务诊断信息。
struct AGORA_FPA_PROXY_API FpaProxyServiceDiagnosisInfo {
char install_id[MAX_STR_LEN];
char instance_id[MAX_STR_LEN];
FpaProxyServiceDiagnosisInfo() {
memset(install_id, 0, sizeof(install_id));
memset(instance_id, 0, sizeof(instance_id));
}
};
FpaProxyServiceDiagnosisInfo
类的构造方法。
参数 | 类型 | 说明 |
---|---|---|
install_id | String | 与运行集成 SDK 的 app 的设备唯一对应的 ID。如果你清除了 app 缓存数据,该参数会更新。 |
instance_id | String | 与当前 IAgoraFpaProxyService 实例唯一对应的 ID。 |
FpaProxyServiceDiagnosisInfo
对象。
FPA 服务配置。
struct AGORA_FPA_PROXY_API FpaProxyServiceConfig {
char app_id[MAX_STR_LEN];
char token[MAX_STR_LEN];
int log_level;
int log_file_size_kb;
char log_file_path[MAX_STR_LEN];
FpaProxyServiceConfig() : log_level(0), log_file_size_kb(0) {
memset(app_id, 0, sizeof(app_id));
memset(token, 0, sizeof(token));
memset(log_file_path, 0, sizeof(log_file_path));
}
};
参数 | 说明 |
---|---|
app_id | 声网为 app 开发者签发的 App ID,详见获取 App ID。 |
token | 在 app 服务器端生成的用于鉴权的 Token。如果你的项目使用 App ID 鉴权,你可以将 token 参数赋值为 App ID 的值;如果你使用 App ID + Token 鉴权,则需要传入你在 App 服务端生成的 Token。 |
log_level | 日志级别。
|
log_file_size_kb | 单个日志文件的大小,单位为 KB。默认值为 1024 KB。如果你将该参数设为 1024 KB,SDK 会最多输出总计 5 MB 的日志文件。如果你将该参数设为小于 1024 KB,设置不生效,单个日志文件最大仍为 1024 KB。 |
log_file_path | string 型。日志文件的完整路径,包括文件名。请确保你指定的目录存在而且可写。 |
FpaProxyServiceConfig
对象。
HTTP 本地代理配置。
struct AGORA_FPA_PROXY_API FpaHttpProxyChainConfig {
FpaChainInfo* chain_array;
int chain_array_size;
bool fallback_when_no_chain_available;
FpaHttpProxyChainConfig()
: chain_array(NULL), chain_array_size(0), fallback_when_no_chain_available(true) {}
};
FpaHttpProxyChainConfig
类的构造方法。
参数 | 说明 |
---|---|
chain_array | FpaChainInfo 对象的数组。 |
chain_array_size | 数组长度。 |
fallback_when_no_chain_available |
FpaHttpProxyChainConfig
对象。
FPA 代理连接的相关信息。
struct AGORA_FPA_PROXY_API FpaProxyConnectionInfo {
char dst_ip_or_domain[MAX_STR_LEN];
char connection_id[MAX_STR_LEN];
char proxy_type[MAX_STR_LEN];
int32_t dst_port;
int32_t local_port;
FpaProxyConnectionInfo() : dst_port(0), local_port(0) {
memset(dst_ip_or_domain, 0, sizeof(dst_ip_or_domain));
memset(connection_id, 0, sizeof(connection_id));
memset(proxy_type, 0, sizeof(proxy_type));
}
};
参数 | 说明 |
---|---|
dst_ip_or_domain | 目标 源站 的 IP 或域名。 |
connection_id | 连接 ID。每个 ID 代表 SDK 通过 FPA 代理与目标 源站 的一次完整连接。 |
proxy_type | 代理类型。
|
dst_port | 目标 源站 的端口。 |
local_port | 本地代理的端口。 |
FpaProxyConnectionInfo
对象。
SDK 返回的同步错误码。
枚举值 | 说明 |
---|---|
FPA_ERR_NONE |
0:没有错误。 |
FPA_ERR_INVALID_ARGUMENT |
-1:参数无效。请检查你是否使用了正确的参数。 |
FPA_ERR_NO_MEMORY |
-2:无法为对象分配内存。 |
FPA_ERR_NOT_INITIALIZED |
-3:FPA 服务没有初始化。请确保你成功进行了初始化。 |
FPA_ERR_CORE_INITIALIZE_FAILED |
-4:FPA 服务初始化失败。 |
FPA_ERR_UNABLE_BIND_SOCKET_PORT |
-5:无法绑定 SDK 内部的 socket 端口。 |
SDK 回调返回的失败原因。
枚举值 | 说明 |
---|---|
FPA_FAILED_REASON_DNS_QUERY |
-101:DNS 解析错误。 |
FPA_FAILED_REASON_SOCKET_CREATE |
-103:SDK 内部创建 socket 失败。 |
FPA_FAILED_REASON_SOCKET_CONNECT |
-104: SDK 内部连接 socket 失败。 |
FPA_FAILED_REASON_CONNECT_TIMEOUT |
-105:连接远端服务器超时。 |
FPA_FAILED_REASON_NO_CHAIN_ID_MATCH |
-106:找不到 chain ID。请检查是否设置了正确的 chain ID。 |
FPA_FAILED_REASON_DATA_READ |
-106: 读取数据失败。 |
FPA_FAILED_REASON_DATA_WRITE |
-107: 写入数据失败。 |
FPA_FAILED_REASON_TOO_FREQUENTLY |
-108:每秒并发连接数超出 100 条的限制。 |
FPA_FAILED_REASON_TOO_MANY_CONNECTIONS |
-109:当前存在的活跃连接数超出 1000 条的限制。 |