icompontents.go
1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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 ConnectionCallback func(IConnection)
type CloseCallback func(IConnection)
type MessageCallback func(IMessage)
type TimerCallback func(IConnection)
//链接
type IConnection interface {
GetID() int
Start()
Stop()
Send(code int32, cmd uint32, b []byte) error
SetConnectionCallback(ConnectionCallback)
SetMessageCallback(MessageCallback)
SetCloseCallback(CloseCallback)
SetTimerCallback(TimerCallback)
}
//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{})
}