Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( AcceptTask TaskTypeCode = 1 //连接任务 ReceiveTask TaskTypeCode = 2 //上行分包任务[UDP不需要分包,使用这个任务池处理数据] HandleTask TaskTypeCode = 3 //上行包处理任务 ReplyTask TaskTypeCode = 4 //下行任务 TaskOutTime TaskErrCode = 0 //超时 TaskErr TaskErrCode = 1 //错误 )
Functions ¶
This section is empty.
Types ¶
type IConnManager ¶
type IConnManager interface { Add(conn IConnection) //添加链接 Remove(conn IConnection) //移除连接 RemoveById(connId uint64) //移除连接 Get(connId uint64) (IConnection, bool) //利用ConnID获取链接 Count() int //获取个数[内部遍历整个map,调用频率控制在'大于5秒'] Range(hFunc func(connId uint64, value IConnection) bool) //遍历 ClearConn() //删除并停止所有链接 }
IConnManager
连接管理接口
type IConnection ¶
type IConnection interface { GetNetConn() interface{} //获取连接(udp获取到的是监听的连接,tcp获取的是真正的客户端连接) GetNetwork() string //获取网络类型[tcp,udp] GetConnId() uint64 //获取客户端ID GetRemoteAddr() net.Addr //获取远程客户端地址信息 GetLocalAddr() net.Addr //获取本地地址 GetHeartTime() time.Time //心跳时间 SendData(data []byte, cmdCode string) error //发送消息到客户端: data 下发数据,cmdCode 指令标识[如: rep 普通回复, cmd 用户操作下发 。。]供业务使用 // SendDataCall 发送消息到客户端带回调:data 下发数据,param 下发需要回调携带参数,cmdCode 指令标识[如: rep 普通回复, cmd 用户操作下发 。。]供业务使用,callFunc 下发后回调函数 SendDataCall(data []byte, cmdCode string, param interface{}, callFunc func(IConnection, []byte, bool, string, interface{}, error)) error SetProperty(key string, value interface{}) //设置链接属性 GetProperty(key string) (interface{}, error) //获取链接属性 RemoveProperty(key string) //移除链接属性 GetPropertyKeys() []string //获取所有属性key GetRecInfo() (count, byteSize uint64) //上行当前处理的包总数(处理前,1开始),总大小(字节) GetRepInfo() (count, byteSize, errCount uint64) //下行当前处理的包总数(处理后),总大小(字节) CallLogHandle(level ErrLevel, msgAry ...interface{}) //设置内部异常抛出处理 Start() //启动连接,让当前连接开始工作 Stop() //停止连接,结束当前连接状态 GetIsClosed() bool //获取的状态(ture:关闭状态,false:未关闭) }
IConnection 连接的接口
type IReceiver ¶
type IReceiver interface { GetHeadLen() int //获取分包所需包头长度 CanHandle(conn IConnection, buffer []byte) bool //是否能处理 Receiver(conn IConnection, buffer []byte) ([]byte, int) //返回数据包,处理到的位置 }
IReceiver 分包器
type IService ¶
type IService interface { Start() //启动服务器方法 Stop() //停止服务器方法 GetConnMgr() IConnManager //得到链接管理 GetConn(connId uint64) (IConnection, bool) //获取连接 SetLogHandle(h func(level ErrLevel, msg ...interface{})) //设置内部异常抛出处理 SetCreateReceiver(h func(IConnection, []byte) []IReceiver) //设置分包处理方法(UDP都是上传完整数据包不需要分包) SetOnConnStart(h func(IConnection)) //设置连接开始处理方法 SetOnConnStop(h func(IConnection)) //设置连接结束处理方法 SetOnReceive(h func(IConnection, []byte)) //连接上传一包完整数据(连接,数据[config.HDataCache启用时方法运行完成后会回收,不可再另开协程处理]) SetOnReply(h func(IConnection, []byte, bool, string, interface{}, error)) //设置下发回调(连接,下发数据,是否成功,业务代码,下发数据时带的参数,异常信息) SetRunTaskError(h func(conn IConnection, taskType TaskTypeCode, taskCode TaskErrCode, task interface{})) //设置处理上发或下行任务处理异常函数[taskType:0上行分包处理 1下行处理任务 2调用处理函数任务,taskCode: 0超时,1异常,task 任务对象] GetStartTime() time.Time //获取服务启动时间 GetReceiveWorkerPool() pools.ITaskWorkerPool //[tcp分包模块,Udp不需要分包直接处理]消息分包模块(工作池) GetReplyWorkerPool() pools.ITaskWorkerPool //消息发送处理器(工作池) GetHandleWorkerPool() pools.ITaskWorkerPool //[TCP特有]消息处理模块(工作池) GetAcceptWorkerPool() pools.ITaskWorkerPool //[TCP特有]连接接收处理器(工作池) }
IService 定义服务器接口
Click to show internal directories.
Click to hide internal directories.