From 7745ed39f3a87474124350288dc5548ebe843a10 Mon Sep 17 00:00:00 2001 From: duanhf2012 Date: Sat, 28 Mar 2020 11:06:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cluster/cluster.go | 1 + cluster/parsecfg.go | 4 ++-- example/GateService/GateService.go | 5 +++-- example/config/cluster/subnet/cluster.json | 2 +- example/main.go | 3 +-- node/node.go | 1 + service/service.go | 9 ++++++++- 7 files changed, 17 insertions(+), 8 deletions(-) diff --git a/cluster/cluster.go b/cluster/cluster.go index fee5c6a..d4ec358 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -11,6 +11,7 @@ import ( var configdir = "./config/" type SubNet struct { + SubNetName string NodeList []NodeInfo } diff --git a/cluster/parsecfg.go b/cluster/parsecfg.go index 0c82a2c..0d827b9 100644 --- a/cluster/parsecfg.go +++ b/cluster/parsecfg.go @@ -119,7 +119,7 @@ func (slf *Cluster) InitCfg(currentNodeId int) error{ if ok == false { return fmt.Errorf("NodeId %d not in any subnet",currentNodeId) } - + subnet.SubNetName = localSubnetName for _,nodeinfo := range subnet.NodeList { localSubNetMapNode[nodeinfo.NodeId] = nodeinfo @@ -160,7 +160,7 @@ func (slf *Cluster) InitCfg(currentNodeId int) error{ slf.localNodeInfo =localNodeInfo //读取服务 - + slf.ReadLocalSubNetServiceConfig(slf.localsubnet.SubNetName) return err } diff --git a/example/GateService/GateService.go b/example/GateService/GateService.go index 5f8620d..ad79bca 100644 --- a/example/GateService/GateService.go +++ b/example/GateService/GateService.go @@ -1,6 +1,7 @@ package GateService import ( + "fmt" "github.com/duanhf2012/origin/event" "github.com/duanhf2012/origin/network" "github.com/duanhf2012/origin/network/processor" @@ -37,10 +38,10 @@ func (slf *GateService) OnEventHandler(ev *event.Event) error{ } func (slf *GateService) OnConnected(clientid uint64){ - + fmt.Printf("client id %d connected",clientid) } func (slf *GateService) OnDisconnected(clientid uint64){ - + fmt.Printf("client id %d disconnected",clientid) } diff --git a/example/config/cluster/subnet/cluster.json b/example/config/cluster/subnet/cluster.json index a97970f..7553826 100644 --- a/example/config/cluster/subnet/cluster.json +++ b/example/config/cluster/subnet/cluster.json @@ -5,7 +5,7 @@ "ListenAddr":"127.0.0.1:8001", "NodeName": "Node_Test1", "remark":"//以_打头的,表示只在本机进程,不对整个子网开发", - "ServiceList": ["TestService1","TestService2","TestServiceCall"] + "ServiceList": ["TestService1","TestService2","TestServiceCall","GateService","TcpService"] }, { "NodeId": 2, diff --git a/example/main.go b/example/main.go index be8d3ef..630a610 100644 --- a/example/main.go +++ b/example/main.go @@ -189,12 +189,11 @@ func (slf *TestService2) OnInit() error { } func main(){ - node.Init() tcpService := &sysservice.TcpService{} gateService := &GateService.GateService{} - tcpService.SetEventReciver(gateService) node.Setup(tcpService,gateService) + node.Init() node.Start() } diff --git a/node/node.go b/node/node.go index d7d62e5..5ffd14e 100644 --- a/node/node.go +++ b/node/node.go @@ -102,6 +102,7 @@ func Start() { func Setup(s ...service.IService) { for _,sv := range s { + sv.OnSetup(sv) preSetupService = append(preSetupService,sv) } } diff --git a/service/service.go b/service/service.go index 743f34e..d7a9a7a 100644 --- a/service/service.go +++ b/service/service.go @@ -16,6 +16,7 @@ type IService interface { Init(iservice IService,getClientFun rpc.FuncRpcClient,getServerFun rpc.FuncRpcServer,serviceCfg interface{}) GetName() string + OnSetup(iservice IService) OnInit() error OnRelease() Wait() @@ -38,8 +39,14 @@ type Service struct { startStatus bool } +func (slf *Service) OnSetup(iservice IService){ + if iservice.GetName() == "" { + slf.name = reflect.Indirect(reflect.ValueOf(iservice)).Type().Name() + } +} + func (slf *Service) Init(iservice IService,getClientFun rpc.FuncRpcClient,getServerFun rpc.FuncRpcServer,serviceCfg interface{}) { - slf.name = reflect.Indirect(reflect.ValueOf(iservice)).Type().Name() + slf.dispatcher =timer.NewDispatcher(timerDispatcherLen) slf.this = iservice slf.InitRpcHandler(iservice.(rpc.IRpcHandler),getClientFun,getServerFun)