Commit c92a54a3773caccd7e21af9d52174735384b9b54

Authored by zhangqijia
1 parent a0c46341

循环引用的问题

actions/HttpAction.go
@@ -5,6 +5,7 @@ import ( @@ -5,6 +5,7 @@ import (
5 "github.com/gin-gonic/gin" 5 "github.com/gin-gonic/gin"
6 "net/http" 6 "net/http"
7 "pro2d/components/db" 7 "pro2d/components/db"
  8 + "pro2d/components/etcd"
8 "pro2d/conf" 9 "pro2d/conf"
9 "pro2d/models" 10 "pro2d/models"
10 "pro2d/protos/pb" 11 "pro2d/protos/pb"
@@ -16,6 +17,7 @@ import ( @@ -16,6 +17,7 @@ import (
16 type HttpAction struct { 17 type HttpAction struct {
17 version string 18 version string
18 port []string 19 port []string
  20 + EtcdClient *etcd.EtcdClient
19 } 21 }
20 22
21 func NewHttpAction(version string, port ...string) *HttpAction { 23 func NewHttpAction(version string, port ...string) *HttpAction {
@@ -84,7 +86,7 @@ func (h *HttpAction) Login(c *gin.Context) { @@ -84,7 +86,7 @@ func (h *HttpAction) Login(c *gin.Context) {
84 } 86 }
85 87
86 var gs []*pb.ServiceInfo 88 var gs []*pb.ServiceInfo
87 - for k, v := range conf.EtcdClient.GetByPrefix(conf.GlobalConf.GameConf.Name) { 89 + for k, v := range h.EtcdClient.GetByPrefix(conf.GlobalConf.GameConf.Name) {
88 gs = append(gs, &pb.ServiceInfo{ 90 gs = append(gs, &pb.ServiceInfo{
89 Id: k, 91 Id: k,
90 Name: conf.GlobalConf.GameConf.Name, 92 Name: conf.GlobalConf.GameConf.Name,
@@ -104,7 +106,8 @@ func (h *HttpAction) Start() error { @@ -104,7 +106,8 @@ func (h *HttpAction) Start() error {
104 models.InitAccountServerModels() 106 models.InitAccountServerModels()
105 107
106 //Etcd 初始化 108 //Etcd 初始化
107 - conf.EtcdClient.PutWithLeasePrefix(conf.GlobalConf.AccountConf.Name, conf.GlobalConf.AccountConf.ID, fmt.Sprintf("%s:%d", conf.GlobalConf.AccountConf.IP, conf.GlobalConf.AccountConf.Port), 5) 109 + h.EtcdClient = etcd.NewEtcdClient(conf.GlobalConf.Etcd)
  110 + h.EtcdClient.PutWithLeasePrefix(conf.GlobalConf.AccountConf.Name, conf.GlobalConf.AccountConf.ID, fmt.Sprintf("%s:%d", conf.GlobalConf.AccountConf.IP, conf.GlobalConf.AccountConf.Port), 5)
108 111
109 //gin初始化 112 //gin初始化
110 r := gin.Default() 113 r := gin.Default()
actions/protocode.go 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +package actions
  2 +
  3 +import (
  4 + "pro2d/components/net"
  5 + "pro2d/protos/pb"
  6 +)
  7 +
  8 +func init() {
  9 + net.ActionMap = make(map[pb.ProtoCode]net.ActionHandler)
  10 +
  11 + net.ActionMap[pb.ProtoCode_HeartRpc] = HeartRpc
  12 + net.ActionMap[pb.ProtoCode_LoginRpc] = LoginRpc
  13 + net.ActionMap[pb.ProtoCode_CreateRpc] = CreateRpc
  14 +
  15 +}
0 \ No newline at end of file 16 \ No newline at end of file
common/protocode.go deleted
@@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
1 -package common  
2 -  
3 -import (  
4 - "github.com/golang/protobuf/proto"  
5 - "pro2d/actions"  
6 - "pro2d/components/net"  
7 - "pro2d/protos/pb"  
8 -)  
9 -  
10 -type ActionHandler func (msg *net.MsgPkg) (int32, proto.Message)  
11 -  
12 -var ActionMap map[pb.ProtoCode]ActionHandler  
13 -  
14 -func init() {  
15 - ActionMap[pb.ProtoCode_HeartRpc] = actions.HeartRpc  
16 - ActionMap[pb.ProtoCode_LoginRpc] = actions.LoginRpc  
17 - ActionMap[pb.ProtoCode_CreateRpc] = actions.CreateRpc  
18 -  
19 -}  
20 \ No newline at end of file 0 \ No newline at end of file
components/net/server.go
@@ -4,8 +4,8 @@ import ( @@ -4,8 +4,8 @@ import (
4 "fmt" 4 "fmt"
5 "github.com/golang/protobuf/proto" 5 "github.com/golang/protobuf/proto"
6 "net" 6 "net"
7 - "pro2d/common"  
8 "pro2d/components/db" 7 "pro2d/components/db"
  8 + "pro2d/components/etcd"
9 "pro2d/conf" 9 "pro2d/conf"
10 "pro2d/models" 10 "pro2d/models"
11 "pro2d/protos/pb" 11 "pro2d/protos/pb"
@@ -13,9 +13,13 @@ import ( @@ -13,9 +13,13 @@ import (
13 "sync" 13 "sync"
14 ) 14 )
15 15
  16 +type ActionHandler func (msg *MsgPkg) (int32, proto.Message)
  17 +var ActionMap map[pb.ProtoCode]ActionHandler
  18 +
16 type Server struct { 19 type Server struct {
17 SConf *conf.SConf 20 SConf *conf.SConf
18 Clients *sync.Map 21 Clients *sync.Map
  22 + EtcdClient *etcd.EtcdClient
19 23
20 } 24 }
21 25
@@ -28,7 +32,7 @@ func NewServer(sConf *conf.SConf) *Server { @@ -28,7 +32,7 @@ func NewServer(sConf *conf.SConf) *Server {
28 32
29 func (s *Server) OnRecv(msg *MsgPkg) { 33 func (s *Server) OnRecv(msg *MsgPkg) {
30 utils.Sugar.Debugf("cmd: %d, data: %s", msg.Head.Cmd, msg.Body) 34 utils.Sugar.Debugf("cmd: %d, data: %s", msg.Head.Cmd, msg.Body)
31 - if md, ok := common.ActionMap[pb.ProtoCode(msg.Head.Cmd)]; ok { 35 + if md, ok := ActionMap[pb.ProtoCode(msg.Head.Cmd)]; ok {
32 errCode, protomsg := md(msg) 36 errCode, protomsg := md(msg)
33 rsp, err := proto.Marshal(protomsg) 37 rsp, err := proto.Marshal(protomsg)
34 if err != nil { 38 if err != nil {
@@ -51,7 +55,8 @@ func (s *Server)Start() error { @@ -51,7 +55,8 @@ func (s *Server)Start() error {
51 models.InitGameServerModels() 55 models.InitGameServerModels()
52 56
53 //Etcd 初始化 57 //Etcd 初始化
54 - conf.EtcdClient.PutWithLeasePrefix(conf.GlobalConf.GameConf.Name, conf.GlobalConf.GameConf.ID, fmt.Sprintf("%s:%d", conf.GlobalConf.GameConf.IP, conf.GlobalConf.GameConf.Port), 5) 58 + s.EtcdClient = etcd.NewEtcdClient(conf.GlobalConf.Etcd)
  59 + s.EtcdClient.PutWithLeasePrefix(conf.GlobalConf.GameConf.Name, conf.GlobalConf.GameConf.ID, fmt.Sprintf("%s:%d", conf.GlobalConf.GameConf.IP, conf.GlobalConf.GameConf.Port), 5)
55 60
56 port := fmt.Sprintf(":%d", s.SConf.Port) 61 port := fmt.Sprintf(":%d", s.SConf.Port)
57 l, err := net.Listen("tcp", port) 62 l, err := net.Listen("tcp", port)
@@ -6,7 +6,6 @@ import ( @@ -6,7 +6,6 @@ import (
6 "gopkg.in/yaml.v3" 6 "gopkg.in/yaml.v3"
7 "io/ioutil" 7 "io/ioutil"
8 "pro2d/components/db" 8 "pro2d/components/db"
9 - "pro2d/components/etcd"  
10 "pro2d/utils" 9 "pro2d/utils"
11 ) 10 )
12 11
@@ -61,7 +60,6 @@ type ServerConf struct { @@ -61,7 +60,6 @@ type ServerConf struct {
61 var( 60 var(
62 GlobalConf ServerConf 61 GlobalConf ServerConf
63 SnowFlack *utils.Snowflake 62 SnowFlack *utils.Snowflake
64 - EtcdClient *etcd.EtcdClient  
65 ) 63 )
66 64
67 func init() { 65 func init() {
@@ -87,5 +85,4 @@ func init() { @@ -87,5 +85,4 @@ func init() {
87 utils.Sugar.Errorf("connect db err: %v", err) 85 utils.Sugar.Errorf("connect db err: %v", err)
88 } 86 }
89 87
90 - EtcdClient = etcd.NewEtcdClient(GlobalConf.Etcd)  
91 } 88 }
92 \ No newline at end of file 89 \ No newline at end of file
1 -Subproject commit f39667f517b4d302674707983210d7ac53460c6b 1 +Subproject commit 432c66d9981fa1f6423f3e5aa27543a98ce8895c
tools/protostostruct.go
@@ -14,8 +14,8 @@ var ( @@ -14,8 +14,8 @@ var (
14 ProtoCode = "syntax = \"proto3\";\noption go_package = \"./pb;pb\";\n\npackage protocode;\n\nenum ProtoCode\n{\n UNKNOWN = 0x000;\n %s\n}" 14 ProtoCode = "syntax = \"proto3\";\noption go_package = \"./pb;pb\";\n\npackage protocode;\n\nenum ProtoCode\n{\n UNKNOWN = 0x000;\n %s\n}"
15 ProtoCodeLine = "\t%sRpc = %02x;\n" 15 ProtoCodeLine = "\t%sRpc = %02x;\n"
16 16
17 - GoProtoCodeStr = "package common\n\nimport (\n\t\"github.com/golang/protobuf/proto\"\n\t\"pro2d/actions\"\n\t\"pro2d/components/net\"\n\t\"pro2d/protos/pb\"\n)\n\ntype ActionHandler func (msg *net.MsgPkg) (int32, proto.Message)\n\nvar ActionMap map[pb.ProtoCode]ActionHandler\n\nfunc init() {\n%s\n}"  
18 - GoProtoCodeLine = "\tActionMap[pb.ProtoCode_%sRpc] = actions.%sRpc\n" 17 + GoProtoCodeStr = "package actions\n\nimport (\n\t\"pro2d/components/net\"\n\t\"pro2d/protos/pb\"\n)\n\nfunc init() {\n\tnet.ActionMap = make(map[pb.ProtoCode]net.ActionHandler)\n\n%s\n}"
  18 + GoProtoCodeLine = "\tnet.ActionMap[pb.ProtoCode_%sRpc] = %sRpc\n"
19 ) 19 )
20 20
21 func ProtoToCode(readPath, filename string) (string, string) { 21 func ProtoToCode(readPath, filename string) (string, string) {
@@ -98,7 +98,7 @@ func ReadProtos(readPath, OutPath string ) error { @@ -98,7 +98,7 @@ func ReadProtos(readPath, OutPath string ) error {
98 return fmt.Errorf("WriteNewFile|Write is err:%v", err) 98 return fmt.Errorf("WriteNewFile|Write is err:%v", err)
99 } 99 }
100 100
101 - fw, err = os.OpenFile( OutPath+"common/protocode.go", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) 101 + fw, err = os.OpenFile( OutPath+"actions/protocode.go", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
102 if err != nil { 102 if err != nil {
103 return fmt.Errorf("WriteNewFile|OpenFile is err:%v", err) 103 return fmt.Errorf("WriteNewFile|OpenFile is err:%v", err)
104 } 104 }