游戏服务器(基于iocp)

本文介绍了一个采用抽象类工厂模式设计的服务器监听接口,包括服务器的各种事件处理回调函数,如建立、运行、停止等,并支持高并发及内部使用IOCp进行管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

  采用抽象类工厂的设计模式,将所有提供的类做了抽象:

 

如下:

 

#pragma once

////////////////////////////////////////////////////////////////////////////////
//! 提供服务器的监听,目的是开发人员可以自己数据
////////////////////////////////////////////////////////////////////////////////

class IServer;
class IServerListener
{
public:
 /*------------------------------------------------------------------------------
 @remarks:服务器成功建立
 /------------------------------------------------------------------------------*/
 virtual  void onSetup(IServer* pSvr){};

 /*------------------------------------------------------------------------------
 @remarks:服务器运行事件
 /------------------------------------------------------------------------------*/
 virtual  void onRun(IServer* pSvr){};

 /*------------------------------------------------------------------------------
 @remarks:服务器停止事件
 /------------------------------------------------------------------------------*/
 virtual  void onStop(IServer* pSvr){};

 /*------------------------------------------------------------------------------
 @remarks:服务器错误处理事件
 /------------------------------------------------------------------------------*/
 virtual  void onError(IServer* pSvr,ISessionPtr session,IBufferPtr buf,size_t nError){};

 /*------------------------------------------------------------------------------
 @remarks:服务器关闭退出
 /------------------------------------------------------------------------------*/
 virtual  void onClose(IServer* pSvr){};

 /*------------------------------------------------------------------------------
 @remarks:当有连接进入,则调用该函数
 @param:pSession当前会话
 /------------------------------------------------------------------------------*/
 virtual  void onSessionEnter(IServer* pSvr,ISessionPtr pSession){};


 /*------------------------------------------------------------------------------
 @remarks:当有连接断开,则调用该函数
 @param:pSession当前会话
 @param nRes 断开的原因 目前 0
 /------------------------------------------------------------------------------*/
 virtual  void onSessionLeaver( IServer* pSvr,ISessionPtr pSession,size_t nRes){};

 /*------------------------------------------------------------------------------
 @remarks:当接收到数据的时候调用该方法
 @param:pSession当前会话
 @param pData 接收到的数据,需要自己释放数据
 @param nBuf :数据的大小
 /------------------------------------------------------------------------------*/
 virtual  void onRecv( IServer* pSvr,ISessionPtr pSession,IBufferPtr buf,size_t nBuf){};

 /*------------------------------------------------------------------------------
 @remarks:消息被处理或者被执行通知
 @param:pSession当前会话
 @param pData 接收到的数据,需要自己释放数据
 @param nBuf :数据的大小
 /------------------------------------------------------------------------------*/
 virtual  void onDoTask( IServer* pSvr,ISessionPtr pSession,IBufferPtr buf,size_t nBuf){};


 /*------------------------------------------------------------------------------
 @remarks:发送数据的时候调用该方法
 @param:pSession当前会话
 @param buf 发送到数据
 @param nBuf :数据的大小
 /------------------------------------------------------------------------------*/
 virtual  void onSend( IServer* pSvr,ISessionPtr pSession,IBufferPtr buf,size_t nBuf){};

 /*------------------------------------------------------------------------------
 @remarks:数据库数据变化通知
 @param buf 发送到数据
 @param nBuf :数据的大小
 /------------------------------------------------------------------------------*/
 virtual  void onDBNotify( IServer* pSvr,IBufferPtr buf,size_t nBuf){};
 
};

 

 

   把自己的游戏服务器和大家共享,

   支持高并发,5000+以上

   内部采用iocp

   内存管理采用引用计数

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值