Hotfox Agent使用示例

Hotfox Agent是开发Hotfox Client的Native C开发库。

导出的函数包括:

.htx_c_api中的HTX_xxx系列函数

.umx2c.h中的UMX_xxx,RS_xxx系列函数

 

以下为如何使用的示例代码。


#include <stdio.h>
#include "../htx_c_api.h"
#include "../umx2c.h"
#include "../thr_mgr.h"

using namespace ngns;
#pragma comment(lib,"..//debug//htx_c.lib")

const char *server_addr = "192.168.0.117";
unsigned short server_port = 9601;

int OnRecv668(void *msg) {
 unsigned short msg_type;
 unsigned long msg_id;
 UMX_GetMsgID(msg,&msg_type,&msg_id);
 printf("recv %d:%d message./n",msg_type,msg_id);
 return 0;
}

int OnRecv667(void *tmsg) {
 printf("recv 667./n");
 return 0;
}


void OnConnect() {
 printf("onconnect./n");
}
void OnClose() {
 printf("onclose./n");
}


DWORD __stdcall RecvProc(void *arg) {
 while(1) {
  void *msg = 0;
  HTX_Recv(&msg);
  if (msg) {
   unsigned short msg_type;
   unsigned long msg_id;
   UMX_GetMsgID(msg,&msg_type,&msg_id);
   printf("recv %d:%d message./n",msg_type,msg_id);
   UMX_Release(msg);
  }
 }
}


HANDLE hExitEvent;
int wait_event_loop() {
 hExitEvent = CreateEvent(0,true,false,0);
 WaitForSingleObject(hExitEvent,INFINITE);
 return 0;
}


void main() {
 int ret;

///< 初始化
 ret = HTX_Init();
 int mode=0;
 ///< HO_MODE
 ///< 消息分派模式
 ///< 1-自动分派,调用HTX_RegisterMsgHandler注册每种消息的处理函数,当接收到消息时,Hotfox Agent自动调用相应的注册函数
 ///< 2-开发者自行处理,如本示例中由RecvProc函数调用HTX_Recv获取接收到的消息
 ///< 默认1
 HTX_SetOption(HO_MODE,(char*)mode,sizeof(mode));
 int auto_keep = 1;
  HO_AUTO_KEEP
 ///< 是否自动保持连接
 ///< 1-自动保持 HotfoxAgent自动保持和服务器的连接,适用于和Hotfox进行通信的后台服务程序
 ///< 0-不自动保持
 ///< 默认0
 HTX_SetOption(HO_AUTO_KEEP,(char*)auto_keep,sizeof(auto_keep));
 /// HO_CONN_TIMEOUT
 /// 连接超时值
 /// 用于同步式连接.向服务器发起连接时,在成功前的尝试时间.单位为秒.默认值:60
 int conn_timeout = 8;
 HTX_SetOption(HO_CONN_TIMEOUT,(char*)conn_timeout,sizeof(conn_timeout));
 /// HO_SYNCALL_TIMEOUT
 ///< 同步调用超时时间
 ///< 线程发出请求后,阻塞等待服务器的处理结果.超过该值指定的时间仍未得到返回,做超时处理
 ///< 同步调用目前只适用于HO_MODE=1的模式
 int sync_call_timeout = 10;
 HTX_SetOption(HO_SYNCALL_TIMEOUT,(char*)sync_call_timeout,sizeof(sync_call_timeout));

 ///< HTX_RegisterMsgHandler注册消息处理函数
 /// 仅在HO_MODE=1时才调用
 HTX_RegisterMsgHandler(6,668,OnRecv668); ///< 668的确认消息由OnRecv668处理
 HTX_RegisterMsgHandler(6,667,OnRecv667); ///< 667的确认消息由OnRecv667处理

 ///< 注册连接建立/断开事件处理函数
 ///< 应用程序可以:
 ///< .在界面上显示连接状态
 ///< .HO_AUTO_KEEP=0时,调用HTX_Connect连接
 HTX_OnClose(OnClose);
 HTX_OnConnect(OnConnect);

 ///< 启动Hotfox Agent的内部线程
 ret = HTX_Startup();

 CThreadManager::instance()->Spawn(RecvProc,0);
 ret = HTX_Connect(server_addr,server_port);

 /// 创建并发送一个UMX消息
 void *msg = 0;
 UMX_New(&msg); ///< 创建一个消息
 UMX_SetMsgID(msg,5,668); ///< 设置消息为MT_CONFIRMATION,668----668确认消息
 HTX_Send(msg); ///< 发送

 ///< 等待结束进程事件
 wait_event_loop();

 ///< 关闭连接
 HTX_Close();
 ///< 停止内部线程
 HTX_Stop();
 ///< 释放Hotfox Agent库
 HTX_Cleanup();
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值