Commit c92a54a3773caccd7e21af9d52174735384b9b54
1 parent
a0c46341
循环引用的问题
Showing
7 changed files
with
32 additions
and
31 deletions
Show diff stats
actions/HttpAction.go
... | ... | @@ -5,6 +5,7 @@ import ( |
5 | 5 | "github.com/gin-gonic/gin" |
6 | 6 | "net/http" |
7 | 7 | "pro2d/components/db" |
8 | + "pro2d/components/etcd" | |
8 | 9 | "pro2d/conf" |
9 | 10 | "pro2d/models" |
10 | 11 | "pro2d/protos/pb" |
... | ... | @@ -16,6 +17,7 @@ import ( |
16 | 17 | type HttpAction struct { |
17 | 18 | version string |
18 | 19 | port []string |
20 | + EtcdClient *etcd.EtcdClient | |
19 | 21 | } |
20 | 22 | |
21 | 23 | func NewHttpAction(version string, port ...string) *HttpAction { |
... | ... | @@ -84,7 +86,7 @@ func (h *HttpAction) Login(c *gin.Context) { |
84 | 86 | } |
85 | 87 | |
86 | 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 | 90 | gs = append(gs, &pb.ServiceInfo{ |
89 | 91 | Id: k, |
90 | 92 | Name: conf.GlobalConf.GameConf.Name, |
... | ... | @@ -104,7 +106,8 @@ func (h *HttpAction) Start() error { |
104 | 106 | models.InitAccountServerModels() |
105 | 107 | |
106 | 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 | 112 | //gin初始化 |
110 | 113 | r := gin.Default() | ... | ... |
... | ... | @@ -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 | 16 | \ No newline at end of file | ... | ... |
common/protocode.go deleted
... | ... | @@ -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 | 0 | \ No newline at end of file |
components/net/server.go
... | ... | @@ -4,8 +4,8 @@ import ( |
4 | 4 | "fmt" |
5 | 5 | "github.com/golang/protobuf/proto" |
6 | 6 | "net" |
7 | - "pro2d/common" | |
8 | 7 | "pro2d/components/db" |
8 | + "pro2d/components/etcd" | |
9 | 9 | "pro2d/conf" |
10 | 10 | "pro2d/models" |
11 | 11 | "pro2d/protos/pb" |
... | ... | @@ -13,9 +13,13 @@ import ( |
13 | 13 | "sync" |
14 | 14 | ) |
15 | 15 | |
16 | +type ActionHandler func (msg *MsgPkg) (int32, proto.Message) | |
17 | +var ActionMap map[pb.ProtoCode]ActionHandler | |
18 | + | |
16 | 19 | type Server struct { |
17 | 20 | SConf *conf.SConf |
18 | 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 | 32 | |
29 | 33 | func (s *Server) OnRecv(msg *MsgPkg) { |
30 | 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 | 36 | errCode, protomsg := md(msg) |
33 | 37 | rsp, err := proto.Marshal(protomsg) |
34 | 38 | if err != nil { |
... | ... | @@ -51,7 +55,8 @@ func (s *Server)Start() error { |
51 | 55 | models.InitGameServerModels() |
52 | 56 | |
53 | 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 | 61 | port := fmt.Sprintf(":%d", s.SConf.Port) |
57 | 62 | l, err := net.Listen("tcp", port) | ... | ... |
conf/conf.go
... | ... | @@ -6,7 +6,6 @@ import ( |
6 | 6 | "gopkg.in/yaml.v3" |
7 | 7 | "io/ioutil" |
8 | 8 | "pro2d/components/db" |
9 | - "pro2d/components/etcd" | |
10 | 9 | "pro2d/utils" |
11 | 10 | ) |
12 | 11 | |
... | ... | @@ -61,7 +60,6 @@ type ServerConf struct { |
61 | 60 | var( |
62 | 61 | GlobalConf ServerConf |
63 | 62 | SnowFlack *utils.Snowflake |
64 | - EtcdClient *etcd.EtcdClient | |
65 | 63 | ) |
66 | 64 | |
67 | 65 | func init() { |
... | ... | @@ -87,5 +85,4 @@ func init() { |
87 | 85 | utils.Sugar.Errorf("connect db err: %v", err) |
88 | 86 | } |
89 | 87 | |
90 | - EtcdClient = etcd.NewEtcdClient(GlobalConf.Etcd) | |
91 | 88 | } |
92 | 89 | \ No newline at end of file | ... | ... |
tools/protostostruct.go
... | ... | @@ -14,8 +14,8 @@ var ( |
14 | 14 | ProtoCode = "syntax = \"proto3\";\noption go_package = \"./pb;pb\";\n\npackage protocode;\n\nenum ProtoCode\n{\n UNKNOWN = 0x000;\n %s\n}" |
15 | 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 | 21 | func ProtoToCode(readPath, filename string) (string, string) { |
... | ... | @@ -98,7 +98,7 @@ func ReadProtos(readPath, OutPath string ) error { |
98 | 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 | 102 | if err != nil { |
103 | 103 | return fmt.Errorf("WriteNewFile|OpenFile is err:%v", err) |
104 | 104 | } | ... | ... |