icompontents.go
3.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
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package components
import (
"github.com/gin-gonic/gin"
"google.golang.org/protobuf/reflect/protoreflect"
"reflect"
)
//-----------------
//----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) //设置消息内容
SetSID(id uint32) //设置连接
GetSID() uint32 //获取连接
}
//网络拆包解包器
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
}
//加解密
IEncipher interface {
Encrypt([]byte) ([]byte, error)
Decrypt([]byte) ([]byte, error)
}
ConnectionCallback func(IConnection)
CloseCallback func(IConnection)
MessageCallback func(IMessage)
TimerCallback func(IConnection)
//链接
IConnection interface {
GetID() uint32
Start()
Stop()
Send(errCode int32, cmd uint32, b []byte) error
CustomChan() chan<- func()
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()
AddRID(rid string, id uint32)
DelRID(rid string)
GetConnByRID(rid string) IConnection
}
//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)
}
IAgent interface {
GetSchema() ISchema
SetSchema(schema ISchema)
GetServer() IServer
SetServer(server IServer)
}
//Connector
IConnector interface {
Connect() error
DisConnect()
Send(cmd uint32, b []byte)
}
//httpserver
IHttp interface {
Start() error
Stop()
SetHandlerFuncCallback(func(tvl, obj reflect.Value) gin.HandlerFunc)
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
UpdateSchema(interface{})
Load() error
Create() error
Update()
SetProperty(key string, val interface{})
SetProperties(properties map[string]interface{})
IncrProperty(key string, val int64)
ParseFields(message protoreflect.Message, properties map[string]interface{}) []int32
}
)
//-----------------
//-----db end------
//-----------------