main.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "rocommon"
  6. "rocommon/service"
  7. _ "rocommon/socket"
  8. _ "rocommon/socket/tcp"
  9. "roserver/baseserver"
  10. "roserver/baseserver/model"
  11. model2 "roserver/cross_server/model"
  12. _ "roserver/cross_server/msg"
  13. _ "roserver/serverproto"
  14. "runtime"
  15. "strconv"
  16. "syscall"
  17. )
  18. func main() {
  19. //记录gate pid用来做关闭操作
  20. sysType := runtime.GOOS
  21. if sysType != "windows" {
  22. if pid := syscall.Getpid(); pid != 1 {
  23. fileName := "crossserver_server.pid" + strconv.Itoa(pid)
  24. ioutil.WriteFile(fileName, []byte(strconv.Itoa(pid)), 0777)
  25. defer os.Remove(fileName)
  26. }
  27. }
  28. baseserver.Init(model.SERVICE_NODE_TYPE_CROSSSERVER_STR, model2.ConfigInit, &model2.CrossServerUpdate{})
  29. //先建立服务器对应的连接,在监听客户端
  30. sConfig := service.GetServiceConfig()
  31. //创建监听器
  32. var acceptorNode rocommon.ServerNode = nil
  33. if sConfig.Node.Addr != "" {
  34. acceptorNode = baseserver.CreateAcceptor(baseserver.ServiceParam{
  35. ServiceType: "tcpAcceptor",
  36. ServiceName: model.SERVICE_NODE_TYPE_CROSSSERVER_STR,
  37. ProcName: "common.backend",
  38. LisAddr: sConfig.Node.Addr,
  39. }, sConfig)
  40. }
  41. for _, concern := range sConfig.Node.Concern {
  42. //建立需要链接的服务器,通过服务器发现etcd来处理(包含在了CreateConnector中)
  43. baseserver.CreateConnector(baseserver.ServiceParam{
  44. DiscoveryServiceName: concern,
  45. DiscoveryServiceZone: sConfig.Node.Zone,
  46. ServiceType: "tcpConnector",
  47. ServiceName: model.SERVICE_NODE_TYPE_CROSSSERVER_STR,
  48. ProcName: "common.backend",
  49. })
  50. }
  51. baseserver.Wait()
  52. baseserver.Exit(acceptorNode)
  53. }