最近在研究libuv的代码,觉得如果使用libuv作为开发库的话,缺少一个快速大规模开发的框架,所以自己倒腾了一个----simple_uv。
simple_uv是基于libuv封装跨平台库,旨在降低入门门槛和提高开发效率以及降低开发者人为出错的概率。
simple_uv简化了客户端与服务端的通信,客户端与服务端的所有交互消息都以某一个类的对象回调到上层业务,你不用关注客户端与服务端通信过程中消息的解析以及堆空间的申请与释放等繁琐且易出错的处理。
为了方便的进行多线程程序的开发以及多线程之间高效率的通信,simple_uv实现了一个CUVThread的线程类,类似windows上mfc中的CWinThread,可以响应其他线程发送过来的异步非阻塞消息,CUVThread提供了一个SendUvMessage的函数,可以向任意的CUVThread线程发送消息。
此外,simple_uv还提供了一个CUVThreadMng的类,管理所有的CUVThread线程,你可以在任意线程中调用CUVThreadMng::GetInstance()->SendUvMessage向指定的CUVThread发送消息。
在simple_uv中,对于客户端发到服务端的消息,服务端都有一个对应的响应函数来处理。例如客户端发送了一个CTestMsg类型的消息到服务端,服务端可以在这样一个函数中响应客户端的请求
int CTestGateWay::OnUvMessage(const CTestMsg &msg, TcpClientCtx *pClient)
{
return CUVThreadMng::GetInstance()->SendUvMessage(msg, msg.MSG_ID, SERVER_TEST_CENTER_TYPE);
}
其中TcpClientCtx *pClient是客户端的soc