Commit 8568cf44b073b31617242db4c7c86f48e65e9110
1 parent
db0d748f
update preserve
Showing
10 changed files
with
73 additions
and
33 deletions
Show diff stats
cmd/gameserver/action/protocode.go
@@ -19,4 +19,4 @@ func GetActionMap() map[interface{}]interface{} { | @@ -19,4 +19,4 @@ func GetActionMap() map[interface{}]interface{} { | ||
19 | am[uint32(pb.ProtoCode_EquipmentDelRpc)] = EquipmentDelRpc | 19 | am[uint32(pb.ProtoCode_EquipmentDelRpc)] = EquipmentDelRpc |
20 | 20 | ||
21 | return am | 21 | return am |
22 | -} | 22 | -} |
23 | +} | ||
23 | \ No newline at end of file | 24 | \ No newline at end of file |
cmd/gameserver/service/agent.go
@@ -64,7 +64,6 @@ func (c *Agent) OnConnection(conn components.IConnection) { | @@ -64,7 +64,6 @@ func (c *Agent) OnConnection(conn components.IConnection) { | ||
64 | 2 角色不存在 | 64 | 2 角色不存在 |
65 | */ | 65 | */ |
66 | func (c *Agent) OnLoginQuery(msg components.IMessage) (int32, proto.Message) { | 66 | func (c *Agent) OnLoginQuery(msg components.IMessage) (int32, proto.Message) { |
67 | - //logger.Debug("11111111cmd: %v, msg: %s", msg.GetHeader().GetMsgID(), msg.GetData()) | ||
68 | req := pb.LoginReq{} | 67 | req := pb.LoginReq{} |
69 | if err := proto.Unmarshal(msg.GetData(), &req); err != nil { | 68 | if err := proto.Unmarshal(msg.GetData(), &req); err != nil { |
70 | logger.Error("loginRpc err: %v", err) | 69 | logger.Error("loginRpc err: %v", err) |
@@ -77,7 +76,7 @@ func (c *Agent) OnLoginQuery(msg components.IMessage) (int32, proto.Message) { | @@ -77,7 +76,7 @@ func (c *Agent) OnLoginQuery(msg components.IMessage) (int32, proto.Message) { | ||
77 | conn := c.Server.GetConnManage().GetConnByUID(uid) | 76 | conn := c.Server.GetConnManage().GetConnByUID(uid) |
78 | if conn != nil { | 77 | if conn != nil { |
79 | logger.Debug("挤掉。。。。。。。。") | 78 | logger.Debug("挤掉。。。。。。。。") |
80 | - conn.SendSuccess(uint32(pb.ProtoCode_DisConnectNty), nil) | 79 | + conn.SendSuccess(uint32(pb.ProtoCode_DisConnectNty), nil, msg.GetHeader().GetPreserve()) |
81 | conn.Stop() | 80 | conn.Stop() |
82 | } | 81 | } |
83 | 82 | ||
@@ -97,15 +96,15 @@ func (c *Agent) OnLoginQuery(msg components.IMessage) (int32, proto.Message) { | @@ -97,15 +96,15 @@ func (c *Agent) OnLoginQuery(msg components.IMessage) (int32, proto.Message) { | ||
97 | return 0, protoMsg | 96 | return 0, protoMsg |
98 | } | 97 | } |
99 | 98 | ||
100 | -func (c *Agent) SendMsg(errCode int32, cmd uint32, msg interface{}) error { | 99 | +func (c *Agent) SendMsg(errCode int32, cmd uint32, msg interface{}, preserve uint32) error { |
101 | if msg == nil || errCode != 0 { | 100 | if msg == nil || errCode != 0 { |
102 | - return c.Send(errCode, cmd, nil) | 101 | + return c.Send(errCode, cmd, nil, preserve) |
103 | } | 102 | } |
104 | rsp, err := proto.Marshal(msg.(proto.Message)) | 103 | rsp, err := proto.Marshal(msg.(proto.Message)) |
105 | if err != nil { | 104 | if err != nil { |
106 | - return c.Send(-100, cmd, nil) | 105 | + return c.Send(-100, cmd, nil, preserve) |
107 | } | 106 | } |
108 | - return c.Send(errCode, cmd, rsp) | 107 | + return c.Send(errCode, cmd, rsp, preserve) |
109 | } | 108 | } |
110 | 109 | ||
111 | func (c *Agent) OnMessage(msg components.IMessage) error { | 110 | func (c *Agent) OnMessage(msg components.IMessage) error { |
@@ -119,24 +118,24 @@ func (c *Agent) OnMessage(msg components.IMessage) error { | @@ -119,24 +118,24 @@ func (c *Agent) OnMessage(msg components.IMessage) error { | ||
119 | //login | 118 | //login |
120 | if msg.GetHeader().GetMsgID() == uint32(pb.ProtoCode_LoginRpc) { | 119 | if msg.GetHeader().GetMsgID() == uint32(pb.ProtoCode_LoginRpc) { |
121 | code, protoMsg := c.OnLoginQuery(msg) | 120 | code, protoMsg := c.OnLoginQuery(msg) |
122 | - return c.SendMsg(code, msg.GetHeader().GetMsgID(), protoMsg) | 121 | + return c.SendMsg(code, msg.GetHeader().GetMsgID(), protoMsg, msg.GetHeader().GetPreserve()) |
123 | } | 122 | } |
124 | 123 | ||
125 | //get handler by msgid | 124 | //get handler by msgid |
126 | - md := c.Server.GetAction(msg.GetHeader().GetMsgID()) | ||
127 | - if md == nil { | 125 | + method := c.Server.GetAction(msg.GetHeader().GetMsgID()) |
126 | + if method == nil { | ||
128 | return fmt.Errorf("cmd: %d, handler is nil", msg.GetHeader().GetMsgID()) | 127 | return fmt.Errorf("cmd: %d, handler is nil", msg.GetHeader().GetMsgID()) |
129 | } | 128 | } |
130 | 129 | ||
131 | if msg.GetHeader().GetMsgID() != uint32(pb.ProtoCode_CreateRpc) && c.Role == nil { | 130 | if msg.GetHeader().GetMsgID() != uint32(pb.ProtoCode_CreateRpc) && c.Role == nil { |
132 | - return c.Send(-101, msg.GetHeader().GetMsgID(), nil) | 131 | + return c.Send(-101, msg.GetHeader().GetMsgID(), nil, msg.GetHeader().GetPreserve()) |
133 | } | 132 | } |
134 | 133 | ||
135 | - //调用协议号对应的逻辑函数 | ||
136 | - f := md.(func(role *models.RoleModel, msg components.IMessage) (int32, interface{})) | 134 | + // 调用协议号对应的逻辑函数 |
135 | + f := method.(func(role *models.RoleModel, msg components.IMessage) (int32, interface{})) | ||
137 | errCode, protoMsg := f(c.Role, msg) | 136 | errCode, protoMsg := f(c.Role, msg) |
138 | logger.Debug("rsp errcode: %d, protocode: %d", errCode, msg.GetHeader().GetMsgID()) | 137 | logger.Debug("rsp errcode: %d, protocode: %d", errCode, msg.GetHeader().GetMsgID()) |
139 | - return c.SendMsg(errCode, msg.GetHeader().GetMsgID(), protoMsg) | 138 | + return c.SendMsg(errCode, msg.GetHeader().GetMsgID(), protoMsg, msg.GetHeader().GetPreserve()) |
140 | } | 139 | } |
141 | 140 | ||
142 | func (c *Agent) OnTimer() { | 141 | func (c *Agent) OnTimer() { |
cmd/test/action/protocode.go
@@ -21,4 +21,4 @@ func GetTestActionMap() map[interface{}]interface{} { | @@ -21,4 +21,4 @@ func GetTestActionMap() map[interface{}]interface{} { | ||
21 | am[uint32(pb.ProtoCode_EquipmentAddNty)] = EquipmentAddNty | 21 | am[uint32(pb.ProtoCode_EquipmentAddNty)] = EquipmentAddNty |
22 | 22 | ||
23 | return am | 23 | return am |
24 | -} | 24 | -} |
25 | +} | ||
25 | \ No newline at end of file | 26 | \ No newline at end of file |
common/components/conn.go
@@ -123,8 +123,8 @@ func (c *Connection) Stop() { | @@ -123,8 +123,8 @@ func (c *Connection) Stop() { | ||
123 | } | 123 | } |
124 | } | 124 | } |
125 | 125 | ||
126 | -func (c *Connection) Send(errCode int32, cmd uint32, data []byte) error { | ||
127 | - buf, err := c.splitter.Pack(cmd, data, errCode, 0) | 126 | +func (c *Connection) Send(errCode int32, cmd uint32, data []byte, preserve uint32) error { |
127 | + buf, err := c.splitter.Pack(cmd, data, errCode, preserve) | ||
128 | if err != nil { | 128 | if err != nil { |
129 | return err | 129 | return err |
130 | } | 130 | } |
@@ -140,8 +140,8 @@ func (c *Connection) Send(errCode int32, cmd uint32, data []byte) error { | @@ -140,8 +140,8 @@ func (c *Connection) Send(errCode int32, cmd uint32, data []byte) error { | ||
140 | } | 140 | } |
141 | } | 141 | } |
142 | 142 | ||
143 | -func (c *Connection) SendSuccess(cmd uint32, data []byte) error { | ||
144 | - buf, err := c.splitter.Pack(cmd, data, 0, 0) | 143 | +func (c *Connection) SendSuccess(cmd uint32, data []byte, preserve uint32) error { |
144 | + buf, err := c.splitter.Pack(cmd, data, 0, preserve) | ||
145 | if err != nil { | 145 | if err != nil { |
146 | return err | 146 | return err |
147 | } | 147 | } |
common/components/connector.go
@@ -66,21 +66,21 @@ func (c *Connector) DisConnect() { | @@ -66,21 +66,21 @@ func (c *Connector) DisConnect() { | ||
66 | c.IConnection.Stop() | 66 | c.IConnection.Stop() |
67 | } | 67 | } |
68 | 68 | ||
69 | -func (c *Connector) Send(cmd uint32, b []byte) error { | 69 | +func (c *Connector) Send(cmd uint32, b []byte, preserve uint32) error { |
70 | logger.Debug("connector send cmd: %d, msg: %s", cmd, b) | 70 | logger.Debug("connector send cmd: %d, msg: %s", cmd, b) |
71 | - return c.IConnection.Send(0, cmd, b) | 71 | + return c.IConnection.Send(0, cmd, b, preserve) |
72 | } | 72 | } |
73 | 73 | ||
74 | -func (c *Connector) SendPB(cmd pb.ProtoCode, b proto.Message) error { | 74 | +func (c *Connector) SendPB(cmd pb.ProtoCode, b proto.Message, preserve uint32) error { |
75 | if b == nil { | 75 | if b == nil { |
76 | - return c.Send(uint32(cmd), nil) | 76 | + return c.Send(uint32(cmd), nil, preserve) |
77 | } | 77 | } |
78 | 78 | ||
79 | l, err := proto.Marshal(b) | 79 | l, err := proto.Marshal(b) |
80 | if err != nil { | 80 | if err != nil { |
81 | return err | 81 | return err |
82 | } | 82 | } |
83 | - return c.Send(uint32(cmd), l) | 83 | + return c.Send(uint32(cmd), l, preserve) |
84 | } | 84 | } |
85 | 85 | ||
86 | func (c *Connector) GetSplitter() ISplitter { | 86 | func (c *Connector) GetSplitter() ISplitter { |
common/components/icompontents.go
@@ -17,7 +17,7 @@ type ( | @@ -17,7 +17,7 @@ type ( | ||
17 | GetDataLen() uint32 //获取消息数据段长度 | 17 | GetDataLen() uint32 //获取消息数据段长度 |
18 | GetMsgID() uint32 //获取消息ID | 18 | GetMsgID() uint32 //获取消息ID |
19 | GetErrCode() int32 //获取消息错误码 | 19 | GetErrCode() int32 //获取消息错误码 |
20 | - GetPreserve() uint32 //获取预留数据 | 20 | + GetPreserve() uint32 //获取预留数据 客户端上传的session。echo回去。 |
21 | } | 21 | } |
22 | //网络包 | 22 | //网络包 |
23 | IMessage interface { | 23 | IMessage interface { |
@@ -52,8 +52,8 @@ type ( | @@ -52,8 +52,8 @@ type ( | ||
52 | GetID() uint32 | 52 | GetID() uint32 |
53 | Start() | 53 | Start() |
54 | Stop() | 54 | Stop() |
55 | - Send(errCode int32, cmd uint32, b []byte) error | ||
56 | - SendSuccess(cmd uint32, b []byte) error | 55 | + Send(errCode int32, cmd uint32, b []byte, preserve uint32) error |
56 | + SendSuccess(cmd uint32, b []byte, preserve uint32) error | ||
57 | CustomChan() chan<- func() | 57 | CustomChan() chan<- func() |
58 | 58 | ||
59 | SetConnectionCallback(ConnectionCallback) | 59 | SetConnectionCallback(ConnectionCallback) |
@@ -108,8 +108,8 @@ type ( | @@ -108,8 +108,8 @@ type ( | ||
108 | DisConnect() | 108 | DisConnect() |
109 | 109 | ||
110 | GetConn() IConnection | 110 | GetConn() IConnection |
111 | - Send(cmd uint32, b []byte) error | ||
112 | - SendPB(cmd pb.ProtoCode, b proto.Message) error | 111 | + Send(cmd uint32, b []byte, preserve uint32) error |
112 | + SendPB(cmd pb.ProtoCode, b proto.Message, preserve uint32) error | ||
113 | } | 113 | } |
114 | 114 | ||
115 | //httpserver | 115 | //httpserver |
common/components/pbsplitter.go
@@ -11,7 +11,7 @@ type PBHead struct { | @@ -11,7 +11,7 @@ type PBHead struct { | ||
11 | Length uint32 | 11 | Length uint32 |
12 | Cmd uint32 | 12 | Cmd uint32 |
13 | ErrCode int32 | 13 | ErrCode int32 |
14 | - PreField uint32 | 14 | + PreField uint32 // 预留字段 客户端上传的session。echo回去。 |
15 | } | 15 | } |
16 | 16 | ||
17 | func (h *PBHead) GetDataLen() uint32 { | 17 | func (h *PBHead) GetDataLen() uint32 { |
@@ -0,0 +1,41 @@ | @@ -0,0 +1,41 @@ | ||
1 | +version: '3.3' | ||
2 | +services: | ||
3 | + mongo: | ||
4 | + image: mongo | ||
5 | + container_name: mongodb-pro2d | ||
6 | + ports: | ||
7 | + - '27017:27017' | ||
8 | + restart: always | ||
9 | + environment: | ||
10 | + MONGO_INITDB_ROOT_USERNAME: root #mongo默认的账号 | ||
11 | + MONGO_INITDB_ROOT_PASSWORD: root #mongo默认的密码 | ||
12 | + volumes: | ||
13 | + - ./.docker/mongo_data:/data/db | ||
14 | + - ./.docker/mongo.conf:/data/mongo.conf | ||
15 | + # command: --config /data/mongo.conf # 配置文件 | ||
16 | + command: [--auth] # 配置文件 | ||
17 | + redis: | ||
18 | + image: redis:latest | ||
19 | + container_name: redis-pro2d | ||
20 | + restart: always | ||
21 | + ports: | ||
22 | + - '6100:6379' | ||
23 | + volumes: | ||
24 | + - ./.docker/redis_data:/data/db | ||
25 | + es: | ||
26 | + image: elasticsearch | ||
27 | + container_name: elasticsearch-pro2d | ||
28 | + restart: always | ||
29 | + environment: | ||
30 | + discovery.type: single-node | ||
31 | + volumes: | ||
32 | + - ./.docker/es/data:/usr/share/elasticsearch/data | ||
33 | + - ./.docker/es/config:/usr/share/elasticsearch/config | ||
34 | + - ./.docker/es/plugins:/usr/share/elasticsearch/plugins | ||
35 | + | ||
36 | + # etcd: | ||
37 | + # image: xieyanze/etcd3 | ||
38 | + # container_name: etcd3-pro2d | ||
39 | + # restart: always | ||
40 | + # ports: | ||
41 | + # - '2379:2379' |
pb/models.pb.go
@@ -530,8 +530,8 @@ type Role struct { | @@ -530,8 +530,8 @@ type Role struct { | ||
530 | sizeCache protoimpl.SizeCache | 530 | sizeCache protoimpl.SizeCache |
531 | unknownFields protoimpl.UnknownFields | 531 | unknownFields protoimpl.UnknownFields |
532 | 532 | ||
533 | - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" index:"unique" pri:"1"` // @inject_tag: index:"unique" pri:"1" | ||
534 | - Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty" index:"unique"` // @inject_tag: index:"unique" | 533 | + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" index:"unique" pri:"1"` // @inject_tag: index:"unique" pri:"1" |
534 | + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty" index:"unique"` // @inject_tag: index:"unique" | ||
535 | Device string `protobuf:"bytes,3,opt,name=device,proto3" json:"device,omitempty"` | 535 | Device string `protobuf:"bytes,3,opt,name=device,proto3" json:"device,omitempty"` |
536 | Nick string `protobuf:"bytes,4,opt,name=nick,proto3" json:"nick,omitempty"` | 536 | Nick string `protobuf:"bytes,4,opt,name=nick,proto3" json:"nick,omitempty"` |
537 | Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level,omitempty"` | 537 | Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level,omitempty"` |