From a4d2a0c4acb567619a95680b2bbd4f8f93be9ed2 Mon Sep 17 00:00:00 2001 From: boyce Date: Wed, 7 Oct 2020 17:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9ETcpGateWay=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=B7=AF=E7=94=B1=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sysservice/tcpgateway/TcpGateService.go | 43 +++++++++++++++++++------ 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/sysservice/tcpgateway/TcpGateService.go b/sysservice/tcpgateway/TcpGateService.go index 2031b09..9d1c984 100644 --- a/sysservice/tcpgateway/TcpGateService.go +++ b/sysservice/tcpgateway/TcpGateService.go @@ -32,12 +32,6 @@ type TcpGateService struct { func (slf *TcpGateService) OnInit() error { slf.OnLoad() - //获取安装好了的TcpService对象 - slf.tcpService = node.GetService("TcpService").(*tcpservice.TcpService) - - //新建内置的protobuf处理器,您也可以自定义路由器,比如json,后续会补充 - slf.processor = processor.NewPBRawProcessor() - //注册监听客户连接断开事件 slf.processor.SetDisConnectedHandler(slf.router.OnDisconnected) //注册监听客户连接事件 @@ -52,21 +46,50 @@ func (slf *TcpGateService) OnInit() error { } func (slf *TcpGateService) OnLoad() { - slf.loadBalance = &LoadBalance{} - slf.router = NewRouter(slf.loadBalance,slf,slf.GetServiceCfg()) + //设置默认LoadBalance + if slf.loadBalance == nil { + slf.loadBalance = &LoadBalance{} + } + + //设置默认Router + if slf.router == nil { + slf.router = NewRouter(slf.loadBalance,slf,slf.GetServiceCfg()) + } + + //新建内置的protobuf处理器,您也可以自定义路由器,比如json + if slf.processor == nil { + slf.processor = processor.NewPBRawProcessor() + } //加载路由 slf.router.Load() + + //设置默认的TcpService服务 + if slf.tcpService == nil { + slf.tcpService = node.GetService("TcpService").(*tcpservice.TcpService) + } + + if slf.tcpService == nil { + panic("TcpService is not installed!") + } } -func (slf *TcpGateService) SetupLoadBalance(loadBalance ILoadBalance){ +func (slf *TcpGateService) SetLoadBalance(loadBalance ILoadBalance){ slf.loadBalance = loadBalance } -func (slf *TcpGateService) SetupRouter(router IRouter){ +func (slf *TcpGateService) SetRouter(router IRouter){ slf.router = router } +func (slf *TcpGateService) SetRawProcessor(processor processor.IRawProcessor){ + slf.processor = processor +} + +func (slf *TcpGateService) SetTcpGateService(tcpService *tcpservice.TcpService){ + slf.tcpService = tcpService +} + func (slf *TcpGateService) RPC_Dispatch(replyMsg *ReplyMessage) error { for _,id := range replyMsg.ClientList { err := slf.tcpService.SendRawMsg(id,replyMsg.Msg)