#ifndef __TYPHOON_SERVER_H__ #define __TYPHOON_SERVER_H__ #include "stdint.h" #include "TyphoonProduct.h" #ifdef __cplusplus extern "C" { #endif #ifdef _WIN32 #ifdef TYPHOON_SOCKS_DLL_IMPLEMENT #define TYPHOON_SERVER_EXTERN __declspec(dllexport) #else #ifdef _STATIC_LIB_ #define TYPHOON_SERVER_EXTERN #else #define TYPHOON_SERVER_EXTERN __declspec(dllimport) #endif #endif #define TYPHOON_STDCALL __stdcall #else #define TYPHOON_SERVER_EXTERN /* nothing */ #define TYPHOON_STDCALL #endif typedef void (TYPHOON_STDCALL *TyphoonServerProxy_OnConnected)(void *pHandle, const char *userData, int userDataLen); typedef void (TYPHOON_STDCALL *TyphoonServerProxy_OnDisConnected)(void *pHandle); typedef struct TyphoonServerProxyConnectionStatusCb { TyphoonServerProxy_OnConnected pfnOnConnected; TyphoonServerProxy_OnDisConnected pfnOnDisConnected; }stTyphoonServerProxyConnectionStatusCb; struct InitServerPrama{ char* listenAddr; uint32_t listenPort; uint32_t minSpeed; uint32_t maxSpeed; int logId; char *logPath; char *licensePath; char* caPath; TyphoonAppId_E licenseType; char* license; bool bUdpGSO; int32_t MaxSegmentSize; bool bSdnOn; void *rootsData; int rootsDataLen; int FecPercent; bool bCompress; }; /* * 初始化代理服务器 * 参数: * param:输入参数结构体 * 返回值: * 0成功,非0失败 */ TYPHOON_SERVER_EXTERN int TyphoonProxy_InitServer(InitServerPrama *param); /* * 去初始化代理服务器 * 参数: * 无 * 返回值: * 0成功,非0失败 */ TYPHOON_SERVER_EXTERN int TyphoonProxy_UninitServer(); TYPHOON_SERVER_EXTERN uint64_t TyphoonProxy_GetNodeId(); TYPHOON_SERVER_EXTERN void * TyphoonProxy_GetServerInstance(); TYPHOON_SERVER_EXTERN void TyphoonProxy_writeLog(const char * fileName, const char * funcName, unsigned int line, unsigned int level, const char * format, ...); TYPHOON_SERVER_EXTERN int TyphoonProxy_RestartSdnRoot(void *rootsData, int rootsDataLen); TYPHOON_SERVER_EXTERN int TyphoonProxy_CheckSdnIsOnline(); TYPHOON_SERVER_EXTERN void TyphoonServerProxy_SetConnectionStatusCb(stTyphoonServerProxyConnectionStatusCb Cb); TYPHOON_SERVER_EXTERN stTyphoonServerProxyConnectionStatusCb TyphoonServerProxy_GetConnectionStatusCb(); /* * 设置 sdn tcp 转发端口 * 参数: * port:端口号 * 返回值: * 无 */ TYPHOON_SERVER_EXTERN void TyphoonProxy_SetSDNLocalTcpProxyPort(uint16_t port); /* * 设置 stun 服务器地址,必须在服务器初始化之前设置才能生效 * 参数: * stun_server:stun 服务器地址 * stun_port:stun 端口号 * 返回值: * 无 */ TYPHOON_SERVER_EXTERN void TyphoonProxy_SetStunServer(const char*stun_server, uint16_t stun_port); /* * 设置 tcp 转发服务器地址,必须在服务器初始化之前设置才能生效 * 参数: * tcp_relay_server:tcp 转发服务器地址 * tcp_relay_port:tcp 转发服务器端口号 * 返回值: * 无 */ TYPHOON_SERVER_EXTERN void TyphoonProxy_SetTcpRelayServer(const char*tcp_relay_server, uint16_t tcp_relay_port); /* * 设置 p2p 使用多服务器ip同时发送 * 参数: * isMultiSend:1 开启,0 关闭 * 返回值: * 无 */ TYPHOON_SERVER_EXTERN void TyphoonProxy_SetMultiSendToServer(int isMultiSend); /* * 获取SDN Root 服务器地址 * 参数: * buf: 地址buff * 返回值: * 0成功,非0失败 */ TYPHOON_SERVER_EXTERN int TyphoonProxy_GetSDNRelayRootAddress(char *buf); #ifdef __cplusplus } #endif #endif