70 lines
2.0 KiB
Go

package main
import (
"io/ioutil"
"os"
"rocommon"
"rocommon/service"
_ "rocommon/socket"
_ "rocommon/socket/tcp"
"roserver/baseserver"
"roserver/baseserver/model"
_ "roserver/cross_router/model"
model2 "roserver/cross_router/model"
"runtime"
"strconv"
"syscall"
)
func main() {
//记录gate pid用来做关闭操作
sysType := runtime.GOOS
if sysType != "windows" {
if pid := syscall.Getpid(); pid != 1 {
fileName := "crossrouter_server.pid" + strconv.Itoa(pid)
ioutil.WriteFile(fileName, []byte(strconv.Itoa(pid)), 0777)
defer os.Remove(fileName)
}
}
baseserver.Init(model.SERVICE_NODE_TYPE_CROSSROUTER_STR, nil, &model2.CrossRouterUpdate{})
//先建立服务器对应的连接,在监听客户端
sConfig := service.GetServiceConfig()
//创建监听器
var acceptorNode rocommon.ServerNode = nil
if sConfig.Node.Addr != "" {
acceptorNode = baseserver.CreateAcceptor(baseserver.ServiceParam{
ServiceType: "tcpAcceptor",
ServiceName: model.SERVICE_NODE_TYPE_CROSSROUTER_STR,
ProcName: "crossrouter.backend",
LisAddr: sConfig.Node.Addr,
}, sConfig)
}
for _, concern := range sConfig.Node.Concern {
if concern == model.SERVICE_NODE_TYPE_SOCIAL_STR {
//social来自跨服多区
//建立需要链接的服务器,通过服务器发现etcd来处理(包含在了CreateConnector中)
baseserver.CreateConnector(baseserver.ServiceParam{
DiscoveryServiceName: concern,
ServiceType: "tcpConnector",
ServiceName: model.SERVICE_NODE_TYPE_CROSSROUTER_STR,
ProcName: "crossrouter.backend",
})
} else {
//建立需要链接的服务器,通过服务器发现etcd来处理(包含在了CreateConnector中)
baseserver.CreateConnector(baseserver.ServiceParam{
DiscoveryServiceName: concern,
DiscoveryServiceZone: sConfig.Node.Zone,
ServiceType: "tcpConnector",
ServiceName: model.SERVICE_NODE_TYPE_CROSSROUTER_STR,
ProcName: "crossrouter.backend",
})
}
}
baseserver.Wait()
baseserver.Exit(acceptorNode)
}