Files
nbi_alarm/router/router.go
2023-08-22 19:25:39 +08:00

83 lines
2.2 KiB
Go

package router
import (
"fmt"
"omc/conf"
"omc/core/decoder"
"omc/core/dpack"
heartbeat "omc/core/heart_beat"
"omc/core/interceptor"
"omc/core/manage"
"omc/handle/api"
"time"
"github.com/aceld/zinx/zconf"
"github.com/aceld/zinx/ziface"
"github.com/aceld/zinx/znet"
)
const (
RealTimeAlarm = 0
ReqLoginAlarm = 1
AckLoginAlarm = 2
ReqSyncAlarmMsg = 3
AckSyncAlarmMsg = 4
ReqSyncAlarmFile = 5
AckSyncAlarmFile = 6
AckSyncAlarmFileResult = 7
ReqHeartBeat = 8
AckHeartBeat = 9
CloseConnAlarm = 10
ReqCMCALoginAlarm = 11
ReqCMCALoginSeq = 12
AckCMCALoginSeq = 13
)
func LoadServer(cg conf.Channel) ziface.IServer {
serverName := fmt.Sprintf("%s:%d", cg.BindFlag, cg.TCPPort)
//new 一个TCP服务
s := znet.NewUserConfServer(&zconf.Config{
TCPPort: cg.TCPPort,
Name: serverName,
Host: "0.0.0.0",
MaxConn: conf.OmcConf.MaxConn,
WorkerPoolSize: uint32(conf.OmcConf.WorkerPoolSize),
HeartbeatMax: conf.OmcConf.HeartbeatMax,
LogDir: conf.OmcConf.LogDir,
LogFile: conf.OmcConf.LogFile,
})
//注册客户端连接建立和丢失函数
s.SetOnConnStart(manage.OnConnectionAdd)
s.SetOnConnStop(manage.OnConnectionLost)
//添加LTV数据格式Decoder
s.SetDecoder(decoder.NewOmcDecoder())
//添加LTV数据格式的Pack封包Encoder
s.SetPacket(dpack.NewDataPack())
// (启动心跳检测)
s.StartHeartBeatWithOption(60*time.Second, &ziface.HeartBeatOption{
MakeMsg: heartbeat.MyHeartBeatMsg,
OnRemoteNotAlive: heartbeat.MyOnRemoteNotAlive,
Router: &api.ReqHeartBeat{},
HeadBeatMsgID: api.ReqHeartBeatMsgID,
})
// 设置默认的心跳发送函数
heart := s.GetHeartBeat()
heart.SetHeartbeatFunc(heartbeat.MyHeartBeat)
// 添加自定义拦截器
s.AddInterceptor(&interceptor.GlobalInterceptor{})
//注册路由 ================
s.AddRouter(api.ReqLoginAlarmMsgID, &api.ReqLoginAlarm{})
s.AddRouter(api.ReqCMCALoginSeqMsgID, &api.ReqCMCALoginSeq{})
s.AddRouter(api.ReqCMCALoginAlarmMsgID, &api.ReqCMCALoginAlarm{})
s.AddRouter(api.ReqSyncAlarmMsgID, &api.ReqSyncAlarmMsg{})
s.AddRouter(api.CloseConnAlarmMsgID, &api.CloseConnAlarm{})
return s
}