Typhoon_C.h 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. #ifndef __TYPHOON_C__H__
  2. #define __TYPHOON_C__H__
  3. #include "uv.h"
  4. #include "YyAuthenticationManageFile.h"
  5. #include "TyphoonDefine.h"
  6. #ifdef __cplusplus
  7. extern "C"
  8. {
  9. #endif
  10. #ifdef _WIN32
  11. #ifdef DLL_IMPLEMENT
  12. #define TYPHOON_EXTERN __declspec(dllexport)
  13. #else
  14. #define TYPHOON_EXTERN __declspec(dllimport)
  15. #endif
  16. #else
  17. #define TYPHOON_EXTERN /* nothing */
  18. #endif
  19. /* TyPhoonConnCallBack 函数 */
  20. TYPHOON_EXTERN HTyPhoonConnCallBack CreateHTyPhoonConnCallBack(stTyPhoonConnCallBack *pCb);
  21. TYPHOON_EXTERN void DestroyHTyPhoonConnCallBack(HTyPhoonConnCallBack handle);
  22. TYPHOON_EXTERN void TyPhoonConnCallBack_SetPushData(HTyPhoonConnCallBack handle, int set);
  23. TYPHOON_EXTERN int TyPhoonConnCallBack_GetPushData();
  24. /* TyphoonChannel 相关函数 */
  25. TYPHOON_EXTERN int32_t TyphoonChannel_IsWritable(HTyphoonChannel handle);
  26. TYPHOON_EXTERN int32_t TyphoonChannel_Send(HTyphoonChannel handle, uint8_t* pData,int32_t len);
  27. TYPHOON_EXTERN int32_t TyphoonChannel_CompressSend(HTyphoonChannel handle, uint8_t* pData,int32_t len, uint8_t compressLevel);
  28. TYPHOON_EXTERN int32_t TyphoonChannel_SendWithExpiredTime(HTyphoonChannel handle, uint8_t* pData,int32_t len, uint32_t lifeTime);
  29. TYPHOON_EXTERN int32_t TyphoonChannel_SendWithMaxCount(HTyphoonChannel handle, uint8_t* pData,int32_t len, uint8_t maxCount);
  30. TYPHOON_EXTERN int32_t TyphoonChannel_SendWithAllFunction(HTyphoonChannel handle,
  31. uint8_t* pData,
  32. int32_t len,
  33. uint8_t compresLevel,
  34. uint32_t lifeTime,
  35. uint8_t maxSendCount,
  36. uint16_t fecPercent);
  37. TYPHOON_EXTERN HTyphoonBuff TyphoonChannel_Recv(HTyphoonChannel handle);
  38. TYPHOON_EXTERN int32_t TyphoonChannel_Close(HTyphoonChannel handle);
  39. TYPHOON_EXTERN int32_t TyphoonChannel_Shutdown(HTyphoonChannel handle);
  40. TYPHOON_EXTERN void TyphoonChannel_SetUserData(HTyphoonChannel handle, uint64_t Data);
  41. TYPHOON_EXTERN uint64_t TyphoonChannel_GetUserData(HTyphoonChannel handle);
  42. TYPHOON_EXTERN void TyphoonChannel_EnableWritableWatch(HTyphoonChannel handle);
  43. TYPHOON_EXTERN void TyphoonChannel_DisableWritableWatch(HTyphoonChannel handle);
  44. TYPHOON_EXTERN uint8_t TyphoonChannel_GetWritableWatch(HTyphoonChannel handle);
  45. TYPHOON_EXTERN uint8_t TyphoonChannel_GetWritableWatch(HTyphoonChannel handle);
  46. TYPHOON_EXTERN int64_t TyphoonChannel_GetUnackedDataLength(HTyphoonChannel handle);
  47. TYPHOON_EXTERN uint16_t TyphoonChannel_ChannelId(HTyphoonChannel handle);
  48. TYPHOON_EXTERN void TyphoonChannel_ShowChannel(HTyphoonChannel handle);
  49. TYPHOON_EXTERN int TyphoonChannel_OpenByClient(HTyphoonChannel handle);
  50. TYPHOON_EXTERN int TyphoonChannel_OpenByServer(HTyphoonChannel handle);
  51. TYPHOON_EXTERN int TyphoonChannel_OpenBySelf(HTyphoonChannel handle);
  52. /* TyphoonFecTun 函数 */
  53. TYPHOON_EXTERN int32_t TyphoonFecTun_Close(HTyphoonFecTun Tun);
  54. TYPHOON_EXTERN uint16_t TyphoonFecTun_TunnelId(HTyphoonFecTun Tun);
  55. /* TyphoonConn 函数 */
  56. TYPHOON_EXTERN HTyphoonConn CreateHTyphoonConn(HTyphoon handle);
  57. TYPHOON_EXTERN void DestroyHTyphoonConn(HTyphoonConn handle);
  58. TYPHOON_EXTERN int32_t TyphoonConn_ConnectTo(HTyphoonConn handle, char *ip, uint16_t port, int sync, uint8_t *data, uint16_t data_len);
  59. TYPHOON_EXTERN int32_t TyphoonConn_ConnectToEx(HTyphoonConn handle, char *ip, uint16_t port, char *bind_ip, uint16_t bind_port,int sync, uint8_t *data, uint16_t data_len);
  60. TYPHOON_EXTERN int32_t TyphoonConn_IsConnected(HTyphoonConn handle);
  61. TYPHOON_EXTERN HTyphoonChannel TyphoonConn_OpenChannel(HTyphoonConn handle);
  62. TYPHOON_EXTERN void TyphoonConn_SetTimeout(HTyphoonConn handle, stTyphoonTimerConfig *pCfg);
  63. TYPHOON_EXTERN stTyphoonTimerConfig TyphoonConn_GetTimeout(HTyphoonConn handle);
  64. TYPHOON_EXTERN uint16_t TyphoonConn_QueryChannelCount(HTyphoonConn handle);
  65. TYPHOON_EXTERN void TyphoonConn_SetMaxSegmentSize(HTyphoonConn handle, uint16_t Mss);
  66. TYPHOON_EXTERN uint16_t TyphoonConn_GetMaxSegmentSize(HTyphoonConn handle);
  67. TYPHOON_EXTERN uint16_t TyphoonConn_QueryMaxSegmentSize(HTyphoonConn handle);
  68. TYPHOON_EXTERN void TyphoonConn_SetUserData(HTyphoonConn handle, uint64_t Data);
  69. TYPHOON_EXTERN uint64_t TyphoonConn_GetUserData(HTyphoonConn handle);
  70. TYPHOON_EXTERN void TyphoonConn_SetSendBuffSize(HTyphoonConn handle, uint32_t Size);
  71. TYPHOON_EXTERN uint32_t TyphoonConn_GetSendBuffSize(HTyphoonConn handle);
  72. TYPHOON_EXTERN void TyphoonConn_SetRecvBuffSize(HTyphoonConn handle, uint32_t Size);
  73. TYPHOON_EXTERN uint32_t TyphoonConn_GetRecvBuffSize(HTyphoonConn handle);
  74. TYPHOON_EXTERN void TyphoonConn_SetConnCallback(HTyphoonConn handle, HTyPhoonConnCallBack cb);
  75. TYPHOON_EXTERN HTyPhoonConnCallBack TyphoonConn_GetConnCallback(HTyphoonConn handle);
  76. TYPHOON_EXTERN void TyphoonConn_SetFixedSendSpeed(HTyphoonConn handle, uint32_t Size);
  77. TYPHOON_EXTERN uint32_t TyphoonConn_GetFixedSendSpeed(HTyphoonConn handle);
  78. TYPHOON_EXTERN void TyphoonConn_SetMaxSendSpeed(HTyphoonConn handle, uint32_t Size);
  79. TYPHOON_EXTERN uint32_t TyphoonConn_GetMaxSendSpeed(HTyphoonConn handle);
  80. TYPHOON_EXTERN void TyphoonConn_SetMinSendSpeed(HTyphoonConn handle, uint32_t Size);
  81. TYPHOON_EXTERN uint32_t TyphoonConn_GetMinSendSpeed(HTyphoonConn handle);
  82. TYPHOON_EXTERN void TyphoonConn_TraverseChannels(HTyphoonConn handle, TyphonnConn_TraverseChannels_Cb_C traverse_cb, void* arg);
  83. TYPHOON_EXTERN uint32_t TyphoonConn_QueryRTT(HTyphoonConn handle);
  84. TYPHOON_EXTERN uint32_t TyphoonConn_QueryDropRate(HTyphoonConn handle);
  85. TYPHOON_EXTERN HTyphoonChannel TyphoonConn_GetDefaultChannel(HTyphoonConn handle);
  86. TYPHOON_EXTERN int32_t TyphoonConn_GetMaxAuthSendSpeed(HTyphoonConn handle);
  87. TYPHOON_EXTERN void TyphoonConn_SetCompress(HTyphoonConn handle, uint8_t CompressMethod);
  88. TYPHOON_EXTERN uint32_t TyphoonConn_GetCompress(HTyphoonConn handle);
  89. TYPHOON_EXTERN void TyphoonConn_SetAuth(HTyphoonConn handle, sTyphoonProxyLicense *license);
  90. TYPHOON_EXTERN HTyphoonChannel TyphoonConn_GetChannel(HTyphoonConn handle, uint16_t cid);
  91. TYPHOON_EXTERN uint32_t TyphoonConn_QueryPeerRTT(HTyphoonConn handle);
  92. TYPHOON_EXTERN uint32_t TyphoonConn_QueryPeerDropRate(HTyphoonConn handle);
  93. TYPHOON_EXTERN TyphoonConnStats *TyphoonConn_GetStats(HTyphoonConn handle);
  94. TYPHOON_EXTERN void TyphoonConn_GetWanAddr(HTyphoonConn handle, struct sockaddr *addr);
  95. TYPHOON_EXTERN void TyphoonConn_GetRemoteAddr(HTyphoonConn handle, struct sockaddr *addr);
  96. TYPHOON_EXTERN uint32_t TyphoonConn_GetCurSendSpeed(HTyphoonConn handle);
  97. TYPHOON_EXTERN int TyphoonConn_IsClient(HTyphoonConn handle);
  98. TYPHOON_EXTERN int TyphoonConn_IsServer(HTyphoonConn handle);
  99. TYPHOON_EXTERN uint8_t TyphoonConn_GetTransferMode(HTyphoonConn handle);
  100. TYPHOON_EXTERN uint8_t TyphoonConn_SetTransferMode(HTyphoonConn handle);
  101. TYPHOON_EXTERN void TyphoonConn_SetPacketLoss(HTyphoonConn handle, uint16_t percent);
  102. TYPHOON_EXTERN int TyphoonConn_IsPacketLossSet(HTyphoonConn handle);
  103. TYPHOON_EXTERN int TyphoonConn_GetPacketLoss(HTyphoonConn handle);
  104. TYPHOON_EXTERN HTyphoonFecTun TyphoonConn_OpenFecTun(HTyphoonConn handle, uint16_t channelCount);
  105. TYPHOON_EXTERN void TyphoonConn_CloseFecTun(HTyphoonConn handle, uint16_t tunId);
  106. /* Typhoon 函数 */
  107. TYPHOON_EXTERN HTyphoon CreateHTyphoon(const char *pLicensePath, const char *pLicenseAddr, int licensePort, int logId);
  108. TYPHOON_EXTERN void DestroyHTyphoon(HTyphoon handle);
  109. TYPHOON_EXTERN int Typhoon_ActiveLicense(HTyphoon handle, char *licenseCode, int productType);
  110. TYPHOON_EXTERN int Typhoon_StartWebServer(HTyphoon handle, const char *pServerAddr, int serverPort);
  111. TYPHOON_EXTERN int Typhoon_GetLicenseInfo(HTyphoon handle, stLocalConfig *pLicenseInfo);
  112. TYPHOON_EXTERN void Typhoon_SetConnCallback(HTyphoon handle, HTyPhoonConnCallBack hCb);
  113. TYPHOON_EXTERN int Typhoon_InitUDPSocket(HTyphoon handle, char* ip, uint16_t port);
  114. TYPHOON_EXTERN SOCKADDR Typhoon_GetLocalAddr(HTyphoon handle);
  115. TYPHOON_EXTERN int32_t Typhoon_GetConnectionCount(HTyphoon handle);
  116. TYPHOON_EXTERN stTyphoonCfg Typhoon_GetTyphoonConfig(HTyphoon handle);
  117. TYPHOON_EXTERN void Typhoon_SetTyphoonConfig(HTyphoon handle, stTyphoonCfg *pCfg);
  118. TYPHOON_EXTERN stTyphoonConnCfg Typhoon_GetConnDefaultCfg(HTyphoon handle);
  119. TYPHOON_EXTERN void Typhoon_SetConnDefaultCfg(HTyphoon handle, stTyphoonConnCfg *pCfg);
  120. TYPHOON_EXTERN uv_loop_t *Typhoon_GetMainLoop(HTyphoon handle);
  121. TYPHOON_EXTERN void Typhoon_SetAppInitCB(HTyphoon handle, Typhoon_AppInit_Callback Init);
  122. TYPHOON_EXTERN void Typhoon_SetAppUninitCB(HTyphoon handle, Typhoon_AppUninit_Callback Uninit);
  123. TYPHOON_EXTERN void Typhoon_SetConnCallback(HTyphoon handle, HTyPhoonConnCallBack hCb);
  124. TYPHOON_EXTERN int Typhoon_SynchronizedExecute(HTyphoon handle, Typhoon_SynchronizedExecute_Cb cb, void *userdata);
  125. TYPHOON_EXTERN char *Typhoon_GetVersion();
  126. TYPHOON_EXTERN void Typhoon_DisableUdpCheckSum(HTyphoon handle);
  127. TYPHOON_EXTERN int Typhoon_SetCaPath(HTyphoon handle, char *caPath);
  128. TYPHOON_EXTERN int Typhoon_SetSocks5ProxyConfig(HTyphoon handle, stTyphoonSocks5Config *pCfg);
  129. TYPHOON_EXTERN stTyphoonSocks5Config *Typhoon_GetSocks5ProxyConfig(HTyphoon handle);
  130. TYPHOON_EXTERN void Typhoon_SetRemainingFlow(HTyphoon handle, const int64_t remainingFlow);
  131. TYPHOON_EXTERN int Typhoon_SetSDNDataDirestory(char *path);
  132. TYPHOON_EXTERN void Typhoon_SetSDNPort(uint32_t port);
  133. TYPHOON_EXTERN TyphoonCfg* Typhoon_GetGlobalCfg();
  134. TYPHOON_EXTERN void Typhoon_SDNId2IpPort(char * ztsid, char *ipv4, int ipv4_len, short *port);
  135. TYPHOON_EXTERN void Typhoon_GlobalInit(int clockInterval);
  136. TYPHOON_EXTERN void Typhoon_UseSDN();
  137. TYPHOON_EXTERN int Typhoon_IsUseSDN();
  138. TYPHOON_EXTERN uint64_t Typhoon_GetNodeId();
  139. /* TyphoonBuff 函数 */
  140. //应用无法直接Create TyphoonBuff实例, 在PULL数据的模式下, 应用可以通过连接的recv函数获取TyphoonBuff
  141. //此处的操作仅用于获取缓存头指针/缓存数据长度
  142. TYPHOON_EXTERN void DestroyHTyphoonBuff(HTyphoonBuff buf);
  143. TYPHOON_EXTERN uint8_t* TyphoonBuff_GetBuff(HTyphoonBuff buf);
  144. TYPHOON_EXTERN int32_t TyphoonBuff_GetLen(HTyphoonBuff buf);
  145. #ifdef __cplusplus
  146. }
  147. #endif
  148. #endif