package components //网络包头 type IHead interface { GetDataLen() uint32 //获取消息数据段长度 GetMsgID() uint32 //获取消息ID GetErrCode() int32 //获取消息错误码 GetPreserve() uint32 //获取预留数据 } //网络包 type IMessage interface { IHead GetHeader() IHead //获取消息头 SetHeader(header IHead) //设置消息头 GetData() []byte //获取消息内容 SetData([]byte) //设置消息内容 SetSessId(int) //设置连接id GetSessId() int //获取连接id } //网络拆包解包器 type ISplitter interface { UnPack([]byte) (IMessage, error) Pack(cmd uint32, data []byte, errcode int32, preserve uint32) ([]byte, error) ParseMsg (data []byte, atEOF bool) (advance int, token []byte, err error) GetHeadLen() uint32 } //链接 type IConnection interface { GetID() int Start() Stop() Send(code int32, cmd uint32, b []byte) error SetConnectionCallback(ConnectionCallback) SetMessageCallback(MessageCallback) SetCloseCallback(CloseCallback) } type ConnectionCallback func(IConnection) type CloseCallback func(IConnection) type MessageCallback func(IMessage) type TimerCallback func(IConnection) //server type IServer interface { Start() error Stop() GetSplitter() ISplitter GetIConnection(id int) IConnection SetConnectionCallback(ConnectionCallback) SetMessageCallback(MessageCallback) SetCloseCallback(CloseCallback) SetTimerCallback(TimerCallback) } //httpserver type IHttp interface { Start() error Stop() BindHandler(interface{}) }