Blame view

common/components/icompontents.go 4.01 KB
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
1
2
  package components
  
c47aa250   zhangqijia   feat: 增加GM相关接口。详情...
3
4
  import (
  	"github.com/gin-gonic/gin"
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
5
  	"github.com/golang/protobuf/proto"
c47aa250   zhangqijia   feat: 增加GM相关接口。详情...
6
  	"google.golang.org/protobuf/reflect/protoreflect"
495e9142   zhangqijia   fix: 增加DisConnect...
7
  	"pro2d/pb"
c47aa250   zhangqijia   feat: 增加GM相关接口。详情...
8
9
  	"reflect"
  )
4255fd8e   zhangqijia   feat: 更新字段
10
  
765431a4   zhangqijia   增加schema接口, 抽象 mo...
11
12
13
14
15
16
17
18
19
  //-----------------
  //----net start----
  //-----------------
  type (
  	//网络包头
  	IHead interface {
  		GetDataLen() uint32  //获取消息数据段长度
  		GetMsgID() uint32    //获取消息ID
  		GetErrCode() int32   //获取消息错误码
8568cf44   zhangqijia   update preserve
20
  		GetPreserve() uint32 //获取预留数据 客户端上传的session。echo回去。
765431a4   zhangqijia   增加schema接口, 抽象 mo...
21
22
23
  	}
  	//网络包
  	IMessage interface {
765431a4   zhangqijia   增加schema接口, 抽象 mo...
24
25
26
27
28
29
  		GetHeader() IHead       //获取消息头
  		SetHeader(header IHead) //设置消息头
  
  		GetData() []byte //获取消息内容
  		SetData([]byte)  //设置消息内容
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
30
31
  		SetSID(id uint32) //设置连接
  		GetSID() uint32   //获取连接
765431a4   zhangqijia   增加schema接口, 抽象 mo...
32
33
34
35
36
37
38
39
  	}
  	//网络拆包解包器
  	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
  	}
b499527e   zhangqijia   feat: 消息包用aes加密
40
41
42
43
44
45
  	//加解密
  	IEncipher interface {
  		Encrypt([]byte) ([]byte, error)
  		Decrypt([]byte) ([]byte, error)
  	}
  
765431a4   zhangqijia   增加schema接口, 抽象 mo...
46
47
48
49
50
51
  	ConnectionCallback func(IConnection)
  	CloseCallback      func(IConnection)
  	MessageCallback    func(IMessage)
  	TimerCallback      func(IConnection)
  	//链接
  	IConnection interface {
58e37bfe   zhangqijia   add sync.Pool to ...
52
  		GetID() uint32
765431a4   zhangqijia   增加schema接口, 抽象 mo...
53
54
  		Start()
  		Stop()
8568cf44   zhangqijia   update preserve
55
56
  		Send(errCode int32, cmd uint32, b []byte, preserve uint32) error
  		SendSuccess(cmd uint32, b []byte, preserve uint32) error
8aaf28dd   zhangqijia   fix: 修复gm系统修改role...
57
  		CustomChan() chan<- func()
765431a4   zhangqijia   增加schema接口, 抽象 mo...
58
59
60
61
62
63
  
  		SetConnectionCallback(ConnectionCallback)
  		SetMessageCallback(MessageCallback)
  		SetCloseCallback(CloseCallback)
  		SetTimerCallback(TimerCallback)
  	}
cd2f96ab   zhangqijia   fix: 优化连接管理
64
65
  	//connManage
  	IConnManage interface {
58e37bfe   zhangqijia   add sync.Pool to ...
66
67
68
  		AddConn(id uint32, connection IConnection)
  		GetConn(id uint32) IConnection
  		DelConn(id uint32) IConnection
cd2f96ab   zhangqijia   fix: 优化连接管理
69
70
  		Range(f func(key interface{}, value interface{}) bool)
  		StopAllConns()
c47aa250   zhangqijia   feat: 增加GM相关接口。详情...
71
72
73
74
  
  		AddRID(rid string, id uint32)
  		DelRID(rid string)
  		GetConnByRID(rid string) IConnection
495e9142   zhangqijia   fix: 增加DisConnect...
75
76
77
78
  
  		AddUID(uid string, id uint32)
  		DelUID(uid string)
  		GetConnByUID(uid string) IConnection
cd2f96ab   zhangqijia   fix: 优化连接管理
79
  	}
765431a4   zhangqijia   增加schema接口, 抽象 mo...
80
81
82
83
84
85
  	//server
  	IServer interface {
  		Start() error
  		Stop()
  
  		GetSplitter() ISplitter
765431a4   zhangqijia   增加schema接口, 抽象 mo...
86
87
  		GetPlugin() IPlugin
  		GetAction(uint32) interface{}
69d286a7   zhangqijia   fix: 插件用来做部分热更
88
  		SetActions(map[interface{}]interface{})
cd2f96ab   zhangqijia   fix: 优化连接管理
89
  		GetConnManage() IConnManage
765431a4   zhangqijia   增加schema接口, 抽象 mo...
90
91
92
93
94
95
  
  		SetConnectionCallback(ConnectionCallback)
  		SetMessageCallback(MessageCallback)
  		SetCloseCallback(CloseCallback)
  		SetTimerCallback(TimerCallback)
  	}
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
96
97
98
99
100
101
  	IAgent interface {
  		GetSchema() ISchema
  		SetSchema(schema ISchema)
  
  		GetServer() IServer
  		SetServer(server IServer)
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
102
  		SendMsg(errCode int32, cmd uint32, msg proto.Message)
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
103
  	}
765431a4   zhangqijia   增加schema接口, 抽象 mo...
104
  
54b3f133   zhangqijia   add connector int...
105
106
107
108
109
  	//Connector
  	IConnector interface {
  		Connect() error
  		DisConnect()
  
495e9142   zhangqijia   fix: 增加DisConnect...
110
  		GetConn() IConnection
8568cf44   zhangqijia   update preserve
111
112
  		Send(cmd uint32, b []byte, preserve uint32) error
  		SendPB(cmd pb.ProtoCode, b proto.Message, preserve uint32) error
54b3f133   zhangqijia   add connector int...
113
114
  	}
  
765431a4   zhangqijia   增加schema接口, 抽象 mo...
115
116
117
118
  	//httpserver
  	IHttp interface {
  		Start() error
  		Stop()
c47aa250   zhangqijia   feat: 增加GM相关接口。详情...
119
  		SetHandlerFuncCallback(func(tvl, obj reflect.Value) gin.HandlerFunc)
765431a4   zhangqijia   增加schema接口, 抽象 mo...
120
121
  		BindHandler(interface{})
  	}
69d286a7   zhangqijia   fix: 插件用来做部分热更
122
  	ActionHandler func(msg IMessage) (int32, interface{})
765431a4   zhangqijia   增加schema接口, 抽象 mo...
123
124
125
126
127
128
  	//用于热更逻辑的插件接口
  	IPlugin interface {
  		LoadPlugin() error
  		SetActions(map[interface{}]interface{})
  		GetAction(uint32) interface{}
  	}
765431a4   zhangqijia   增加schema接口, 抽象 mo...
129
130
131
132
133
134
135
136
137
138
  )
  
  //-----------------
  //-----db start----
  //-----------------
  type (
  	IDB interface {
  		CreateTable() error
  
  		Create() (interface{}, error)
8d983031   zhangqijia   loginReq uid -> t...
139
  		Save() error
765431a4   zhangqijia   增加schema接口, 抽象 mo...
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
  		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
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
155
  		UpdateSchema(interface{})
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
156
157
  		SetConn(conn IConnection)
  		GetConn() IConnection
765431a4   zhangqijia   增加schema接口, 抽象 mo...
158
159
160
  
  		Load() error
  		Create() error
765431a4   zhangqijia   增加schema接口, 抽象 mo...
161
162
163
164
  		Update()
  
  		SetProperty(key string, val interface{})
  		SetProperties(properties map[string]interface{})
c8509ef6   zhangqijia   fix: notify equip...
165
  		IncrProperty(key string, val int64) int64
b499527e   zhangqijia   feat: 消息包用aes加密
166
  		ParseFields(message protoreflect.Message, properties map[string]interface{}) []int32
765431a4   zhangqijia   增加schema接口, 抽象 mo...
167
168
169
170
171
172
  	}
  )
  
  //-----------------
  //-----db end------
  //-----------------