Files
origin/sysservice/tcpgateway/TcpGateService.go

82 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package tcpgateway
import (
"github.com/duanhf2012/origin/log"
"github.com/duanhf2012/origin/network/processor"
"github.com/duanhf2012/origin/node"
"github.com/duanhf2012/origin/service"
"github.com/duanhf2012/origin/sysservice/tcpservice"
)
func init(){
node.Setup(&tcpservice.TcpService{})
node.Setup(&TcpGateService{})
}
type MsgTypeRouterInfo struct {
router IRouter
serviceName string
}
type TcpGateService struct {
service.Service
processor processor.IRawProcessor
tcpService *tcpservice.TcpService
loadBalance ILoadBalance
router IRouter
}
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)
//注册监听客户连接事件
slf.processor.SetConnectedHandler(slf.router.OnConnected)
//注册监听消息类型MsgType_MsgReq并注册回调
slf.processor.SetRawMsgHandler(slf.router.RouterMessage)
//将protobuf消息处理器设置到TcpService服务中
slf.tcpService.SetProcessor(slf.processor,slf.GetEventHandler())
return nil
}
func (slf *TcpGateService) OnLoad() {
slf.loadBalance = &LoadBalance{}
slf.router = NewRouter(slf.loadBalance,slf,slf.GetServiceCfg())
//加载路由
slf.router.Load()
}
func (slf *TcpGateService) SetupLoadBalance(loadBalance ILoadBalance){
slf.loadBalance = loadBalance
}
func (slf *TcpGateService) SetupRouter(router IRouter){
slf.router = router
}
func (slf *TcpGateService) RPC_Dispatch(replyMsg *ReplyMessage) error {
for _,id := range replyMsg.ClientList {
err := slf.tcpService.SendRawMsg(id,replyMsg.Msg)
if err != nil {
log.Debug("SendRawMsg fail:%+v!",err)
}
}
return nil
}