启动入口
This commit is contained in:
138
nb_alarm_agent.go
Normal file
138
nb_alarm_agent.go
Normal file
@@ -0,0 +1,138 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/aceld/zinx/zutils/commandline/args"
|
||||
|
||||
"omc/conf"
|
||||
|
||||
api2 "omc/api"
|
||||
"omc/core"
|
||||
"omc/db"
|
||||
"omc/decoder"
|
||||
"omc/dpack"
|
||||
"omc/omc"
|
||||
"os"
|
||||
"os/signal"
|
||||
"time"
|
||||
|
||||
"github.com/aceld/zinx/zconf"
|
||||
"github.com/aceld/zinx/ziface"
|
||||
"github.com/aceld/zinx/zlog"
|
||||
"github.com/aceld/zinx/znet"
|
||||
)
|
||||
|
||||
// OnConnectionAdd 当客户端建立连接的时候的hook函数
|
||||
func OnConnectionAdd(conn ziface.IConnection) {
|
||||
//创建一个user
|
||||
|
||||
user := core.NewUser(conn, conn.RemoteAddrString())
|
||||
//将当前新上线玩家添加到ChannelManager中
|
||||
m := core.GetManager(conn.GetName())
|
||||
if m == nil {
|
||||
zlog.Ins().ErrorF("server internal error in GetManager")
|
||||
conn.Stop()
|
||||
return
|
||||
}
|
||||
m.AddUser(user)
|
||||
|
||||
//将该连接绑定属性PID
|
||||
conn.SetProperty("UID", user.UID)
|
||||
|
||||
zlog.Ins().InfoF("====> User uID = %s", user.UID, " arrived ====", "")
|
||||
}
|
||||
|
||||
// OnConnectionLost 当客户端断开连接的时候的hook函数
|
||||
func OnConnectionLost(conn ziface.IConnection) {
|
||||
//获取当前连接的PID属性
|
||||
uID, _ := conn.GetProperty("UID")
|
||||
var userID string
|
||||
if uID != nil {
|
||||
userID = uID.(string)
|
||||
}
|
||||
|
||||
//根据pID获取对应usr
|
||||
m := core.GetManager(conn.GetName())
|
||||
if m == nil {
|
||||
zlog.Ins().ErrorF("server internal error in GetManager")
|
||||
return
|
||||
}
|
||||
user := m.GetUserByPID(userID)
|
||||
|
||||
//触发玩家下线业务
|
||||
if user != nil {
|
||||
user.LostConnection(m)
|
||||
}
|
||||
|
||||
zlog.Ins().InfoF("====> User %s-%s", user.UID, user.UserName, " left =====")
|
||||
|
||||
}
|
||||
|
||||
// go run nb_alarm_agent.go -c conf\nbi_alarm_agent.json
|
||||
func main() {
|
||||
//配置初始化
|
||||
conf.Init(args.Args.ConfigFile)
|
||||
db.Init()
|
||||
//创建服务器句柄
|
||||
for _, cg := range conf.OmcConf.Channel {
|
||||
serverName := fmt.Sprintf("omc-tcp-Server-port:%d", cg.TCPPort)
|
||||
//注册用户管理模块
|
||||
m := core.NewManager(serverName, cg.BindFlag, cg.Province, cg.DeviceCode)
|
||||
|
||||
//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(OnConnectionAdd)
|
||||
s.SetOnConnStop(OnConnectionLost)
|
||||
|
||||
//注册路由
|
||||
s.AddRouter(omc.ReqLoginAlarm, &api2.LoginApi{})
|
||||
s.AddRouter(omc.ReqHeartBeat, &api2.HeartBeatApi{})
|
||||
s.AddRouter(omc.CloseConnAlarm, &api2.CloseApi{})
|
||||
s.AddRouter(omc.ReqSyncAlarmMsg, &api2.SyncAlarmApi{})
|
||||
s.AddRouter(omc.ReqSyncAlarmFile, &api2.SyncAlarmFileApi{})
|
||||
s.AddRouter(omc.ReqCMCALoginSeq, &api2.SyncAlarmFileApi{})
|
||||
s.AddRouter(omc.ReqCMCALoginAlarm, &api2.SyncAlarmFileApi{})
|
||||
|
||||
s.AddRouter(290, &api2.ServerRouter{})
|
||||
|
||||
//添加LTV数据格式Decoder
|
||||
s.SetDecoder(decoder.NewOmcDecoder())
|
||||
//添加LTV数据格式的Pack封包Encoder
|
||||
s.SetPacket(dpack.NewDataPack())
|
||||
|
||||
// (启动心跳检测)
|
||||
s.StartHeartBeatWithOption(60*time.Second, &ziface.HeartBeatOption{
|
||||
MakeMsg: core.MyHeartBeatMsg,
|
||||
OnRemoteNotAlive: core.MyOnRemoteNotAlive,
|
||||
Router: &api2.HeartBeatApi{},
|
||||
HeadBeatMsgID: uint32(0xFF),
|
||||
})
|
||||
// 设置默认的心跳发送函数
|
||||
heart := s.GetHeartBeat()
|
||||
heart.SetHeartbeatFunc(core.MyHeartBeat)
|
||||
|
||||
//启动服务
|
||||
go s.Serve()
|
||||
|
||||
//启动实时告警
|
||||
go m.RealTimeAlarm()
|
||||
}
|
||||
|
||||
// close
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt, os.Kill)
|
||||
sig := <-c
|
||||
zlog.Ins().InfoF("===exit=== %s", sig)
|
||||
}
|
||||
Reference in New Issue
Block a user