基于C++的纯面向对象的通用高性能大并发TCPSERVERCLIENT开发框架实践系列之基础篇Word格式文档下载.docx
- 文档编号:20702832
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:17
- 大小:32.43KB
基于C++的纯面向对象的通用高性能大并发TCPSERVERCLIENT开发框架实践系列之基础篇Word格式文档下载.docx
《基于C++的纯面向对象的通用高性能大并发TCPSERVERCLIENT开发框架实践系列之基础篇Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于C++的纯面向对象的通用高性能大并发TCPSERVERCLIENT开发框架实践系列之基础篇Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
virtualboolBeforeRun(){returntrue;
}//线程启动之前,可用来做一些初始化
virtualvoidAfterRun(interrcode){}//线程启动之后,如果errcode为0表示启动成功,否则表示一个出错代码,可使用strerror(errcode)得到具体的出错信息
boolstart();
//启动线程
voidstop(){m_stop=true;
}//非强制性地停止线程
protected:
boolIsStop()const{returnm_stop;
}//判断是否要退出线程
Private:
pthread_tm_thread//线程句柄
boolm_stop;
//是否停止标识
2.4.CThreadPool
2.4.1.功能
提供一个通用的线程池功能。
2.4.2.定义
template<
classCThreadClass>
classCThreadPool
typedefstd:
:
list<
CThreadClass*>
TThreadList;
boolcreate(uint32_tsize);
//创建和启动线程,线程个数由size指定
voiddestroy();
//停止和销毁所有线程
TThreadListm_lstThread;
2.5.CMutex
2.5.1.功能
不可递归的锁。
2.5.2.定义
classCMutex
CMutex(boolrec):
m_rec(rec){}
CMutex():
m_rec(false);
//初始化mutex
~CMutex();
//释放mutex
boollock();
//加锁,出错代码由errno保存
boolunlock();
//解锁,出错代码由errno保存
boolm_rec;
//是否可递归标识,如果为true则可递归,否则不可以递归
pthread_mutex_tm_mtx;
//mutex句柄
2.6.CRecMutex
2.6.1.功能
可递归的锁。
2.6.2.定义
classCRecMutex:
publicCMutex
CRecMutex():
CMutex(true){}
2.7.CMutexGuard
2.7.1.功能
智能锁,在构造中加锁,在析构中自动解锁。
2.7.2.定义
classCMutexClass>
classCMutexGuard
friendclassCCondition;
public
CMutexGuard(CMutexClass&
mutex):
m_mutex(mutex){mutex.lock();
}
~CMutexGuard(){m_mutex.unlock();
CMutexClass&
m_mutex;
2.8.CCondition
2.8.1.功能
Posix条件的封装。
2.8.2.定义
classCCondition
CCondition();
//初始化m_cond
~CCondition();
//释放m_cond
boolTimedWait(uint32_tmilliSeconds);
//以毫秒方式等待,直到超时
boolsignal();
//唤醒等待者
pthread_cond_tm_cond;
//条件句柄
2.9.CArrayQueue
2.9.1.功能
以数组方式实现的队列。
2.9.2.应用场景
用于连接池,以避免每来一个连接创建一个连接对象。
2.9.3.定义
typeTNodeType>
classCArrayQueue
CArrayQueue(uint32_tsize);
~CArrayQueue();
boolpush(TNodeTypepNode);
//入栈操作
TNodeTypepop();
//出栈操作
boolempty()const;
//如果队列为空,则返回true,否则返回false;
boolfull()const;
//如果队列满,则返回true,否则返回false;
intm_front;
//队首下标
intm_rear;
//队尾下标
TNodeType*m_pQueueArray;
//队列用的数组
2.10.CListQueueNode
2.10.1.功能
链表队列结点类型,实现基本的双向链表操作。
2.10.2.定义
classCListQueueNode
CListQueueNode();
CListQueueNode*GetNext()const;
voidSetNext(CListQueueNode*pNext);
CListQueueNode*GetPrev()const;
voidSetPrev(CListQueueNode*pPrev);
CListQueueNode*m_next;
CListQueueNode*m_prev;
2.11.CListQueue
2.11.1.功能
链表队列,提供push到队尾和从队首遍历的功能,并提供链表的随机删除任意结点功能。
2.11.2.应用场景
超时连接的管理,连接按超时时间长短存储队列中,并可从链表中随机删除其中任何一个结点。
2.11.3.定义
classCListQueue
CListQueue();
CListQueueNode*front()const;
//返回队首指针
voidpush(CListQueueNode*pNode);
//将结点添加到队尾
voidremove(CListQueueNode*pNode);
//从链表中删除pNode这个结点
CListQueueNode*m_pFront;
//队首指针
CListQueueNode*m_pRear;
//队尾指针
3.Socket相关
3.1.类图
3.2.CHandle
3.2.1.功能
所有句柄类对象的基类,包括socket和管道。
3.2.2.定义
classCHandle
CHandle();
SetHandle(intfd);
//设置句柄
intGetHandle()const;
//返回句柄值
THandleTypeGetType()const;
//得到句柄对象类型
boolSetNonBlock(boolblock);
//阻塞和非阻塞属性设置
uint32_tGetEpollEvents()const;
//返回已注册的EPOLL事件
voidSetEpollEvents(uint32_tevents);
//设置已注册的EPOLL事件
intm_fd;
//句柄
uint32_tm_events;
//Epoll事件
THandleTypem_type;
//句柄类型,请参见THandleType一节
3.3.THandleType
3.3.1.功能
句柄对象的类型。
3.3.2.定义
typedefenum
htPipe,//管道
htTcpListener,//监听者
htTcpServant,//服务端的侍者
htTcpClient//客户端
}THandleType;
3.4.CEpoller
3.4.1.功能
对epoll的封装。
3.4.2.定义
classCEpoller
//创建一个epoll,其中size是epoll大小
//销毁epoll
boolAddEvents(CHandle*pHandle,uint32_tevents);
//添加一个CHandle
boolModEvents(CHandle*pHandle,uint32_tevents);
//修改一个CHandle
boolDelEvents(CHandle*pHandle);
//删除一个CHandle
intTimedWait(uint32_tmilliSeconds);
//毫秒级超时等待
CHandle*GetHandle(intindex)const;
//TimedWait成功返回后,通过这个方法得到是哪个CHandle
3.5.CSocket
3.5.1.功能
对TCP和UDP通用部分的封装。
3.5.2.定义
classCSocket
CSocket();
boolcreate(booltcp);
//创建一个SOCKET,如果tcp为true,则创建TCP套接字,否则创建UDP套接字
boolIsSSL()const;
//如果返回true,则表示支持SSL,否则不支持
voidSetSSL(boolssl);
//更新是否支持SSL标识
boolm_ssl;
//否支持SSL标识
3.6.CTcpListener
3.6.1.功能
TCP监听套接字的封装,提供listen和accept两个方法。
3.6.2.定义
classCTcpListener:
publicCSocket
boollisten(constchar*ip,uint16_tport);
//监听
intaccept();
//接受一个连接,并返回连接的句柄
3.7.TListenParam
3.7.1.功能
监听参数结构体。
3.7.2.定义
typedefstruct
boolssl;
//是否作为一个SSL类型的监听者
uint16_tport;
//监听端口
std:
stringip;
//监听IP地址
}TListenParam;
3.8.TListenParamList
3.8.1.功能
监听参数结构体链表。
3.8.2.定义
TListenParam*>
TListenParamList;
3.9.CTcpListenerManager
3.9.1.功能
CTcpListener管理类,用来批量的监听。
3.9.2.定义
classCListenerClass>
classCTcpListnerManager
voidadd(TListenParam&
);
//添加一个监听
boolcreate();
//创建所有监听
//销毁所有监听
TListenParamListm_lstListenParam;
//监听参数表
3.10.CTcpConnector
3.10.1.功能
TCP服务端和客户端通讯连接的封装。
3.10.2.定义
classCTcpConnector:
intreceive(constchar*buf,uint32_tbuflen);
//接收数据
intsend(char*buf,uint32_tbuflen);
//发送数据
3.11.CServant
3.11.1.功能
TCP服务端用来通讯的连接,由于服务端是被动的,有侍者的含义。
3.11.2.定义
classCServant
voidattach(intfd);
//将CServant关联到一个fd上。
3.12.CServantPool
3.12.1.功能
CServant池,主要功能是避免来一个请求需要创建和销毁一个CServant对象。
3.12.2.定义
classCServantPool
//创建Servant池,size为池中Servant个数
//释放所有Servant
CServant*borrow();
//从池中借出一个Servant
voidreclaim(CServant*pServant);
//将一个Servant还回到池中
CArrayQueue<
CServant*>
m_ServantQueue;
3.13.CTcpClient
3.13.1.功能
TCP客户端连接对象。
3.13.2.定义
classCTcpClient:
boolTimedWait(uint32_tMilliSeconds,constchar*ServIP,uint16_tServPort,constchar*LocalIP=NULL,uint16_tLocalPort=0);
//带超时功能的连接,支持绑定本地IP和端口
3.14.TConnectParam
3.14.1.功能
客户端需要指定的连接参数。
3.14.2.定义
//是否为SSL连接
uint16_tserver_port;
//服务端的监听端口
uint16_tlocal_port;
//需要绑定的本地端口
stringserver_ip;
//服务端监听的IP
stringlocal_ip;
//需要绑定的本地IP
}TConnectParam;
3.15.CTcpClientManager
3.15.1.功能
CTcpClient管理类,以支持批量连接到多个服务端。
3.15.2.定义
classCTcpClientManager
voidadd(constTConnectParam&
//添加一个连接
//执行所有连接
//断开所有连接,并销毁所有CTcpClient
3.16.CSSLmanager
3.16.1.功能
SSL管理类,提供SSL库初始化等功能。
3.16.2.定义
classCSSLmanager
boolSSLinit();
voidSSLfini();
3.17.CTimeoutable
3.17.1.功能
可超时对象接口,提供时间戳功能。
3.17.2.定义
classCTimeoutable
time_tGetTimestamp()const;
//返回时间戳
voidUpdateTimestamp(time_ttimestamp);
//更新时间戳
time_tm_timestamp;
//时间戳
3.18.ITimeoutEvent
3.18.1.功能
超时回调接口,以便在超时时,框架使用者可以做一些处理,如关闭连接等。
3.18.2.定义
classITimeoutEvent
virtualvoidOnTimeout(CTimeoutable*)=0;
3.19.CTimeoutManager
3.19.1.功能
超时管理类。
CTimeoutManager借助CListQueue来管理超时连接。
3.19.2.定义
classCTimeoutManager
voidCheckTimeout();
//检测超时的连接,如果超时,则将超时的从超时队列中删除,并回调ITimeoutEvent方法,以便将超时的连接关闭掉
voidadd(CTimeoutable*);
//添加一个连接到超时队列中
voidremove(CTimeoutable*);
//从超时队列中删除一个连接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C+ 面向 对象 通用 性能 并发 TCPSERVERCLIENT 开发 框架 实践 系列 基础
链接地址:https://www.bdocx.com/doc/20702832.html