icompontents.go
2.88 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package components
//-----------------
//----net start----
//-----------------
type (
//网络包头
IHead interface {
GetDataLen() uint32 //获取消息数据段长度
GetMsgID() uint32 //获取消息ID
GetErrCode() int32 //获取消息错误码
GetPreserve() uint32 //获取预留数据
}
//网络包
IMessage interface {
GetHeader() IHead //获取消息头
SetHeader(header IHead) //设置消息头
GetData() []byte //获取消息内容
SetData([]byte) //设置消息内容
SetSession(IConnection) //设置连接
GetSession() IConnection //获取连接
}
//网络拆包解包器
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
}
ConnectionCallback func(IConnection)
CloseCallback func(IConnection)
MessageCallback func(IMessage)
TimerCallback func(IConnection)
//链接
IConnection interface {
GetID() uint32
Start()
Stop()
Send(code int32, cmd uint32, b []byte) error
SetConnectionCallback(ConnectionCallback)
SetMessageCallback(MessageCallback)
SetCloseCallback(CloseCallback)
SetTimerCallback(TimerCallback)
}
//connManage
IConnManage interface {
AddConn(id uint32, connection IConnection)
GetConn(id uint32) IConnection
DelConn(id uint32) IConnection
Range(f func(key interface{}, value interface{}) bool)
StopAllConns()
}
//server
IServer interface {
Start() error
Stop()
GetSplitter() ISplitter
GetPlugin() IPlugin
GetAction(uint32) interface{}
SetActions(map[interface{}]interface{})
GetConnManage() IConnManage
SetConnectionCallback(ConnectionCallback)
SetMessageCallback(MessageCallback)
SetCloseCallback(CloseCallback)
SetTimerCallback(TimerCallback)
}
//Connector
IConnector interface {
Connect() error
DisConnect()
Send(cmd uint32, b []byte)
}
//httpserver
IHttp interface {
Start() error
Stop()
BindHandler(interface{})
}
ActionHandler func(msg IMessage) (int32, interface{})
//用于热更逻辑的插件接口
IPlugin interface {
LoadPlugin() error
SetActions(map[interface{}]interface{})
GetAction(uint32) interface{}
}
)
//-----------------
//-----db start----
//-----------------
type (
IDB interface {
CreateTable() error
Create() (interface{}, error)
Save() error
Load() error
FindOne() error
UpdateProperty(key string, val interface{}) error
UpdateProperties(properties map[string]interface{}) error
SetUnique(key string) (string, error)
}
ISchema interface {
Init()
GetDB() IDB
GetPri() interface{}
GetSchema() interface{}
GetSchemaName() string
Load() error
Create() error
Update()
SetProperty(key string, val interface{})
SetProperties(properties map[string]interface{})
}
)
//-----------------
//-----db end------
//-----------------