示例#1
0
        public DataBaseContext.GameDb GetDBContext()
        {
            var db = new DataBaseContext.GameDb(Connection);

            if (NetProtoTool.EnableLog)
            {
                db.Log = Console.Out;
            }
            return(db);
        }
示例#2
0
        public void Start()
        {
            if (IsRunning)
            {
                return;
            }
            MonitorPool.Singleton.Start();
            ResourcesLoader.Singleton.LoadAllConfig(this.configRoot);
            IsRunning = true;
            //同时对外对内服务器不能使用全部注册
            var listenHandler = new RequestHandle();

            //2 对外
            listenHandler.RegAssembly(this.GetType().Assembly, HandleResponserType.CLIENT_SERVER);
            ListenServer = new SocketServer(new ConnectionManager(), port);
            ListenServer.HandlerManager = listenHandler;
            ListenServer.Start();

            var serviceHandler = new RequestHandle();

            serviceHandler.RegAssembly(this.GetType().Assembly, HandleResponserType.SERVER_SERVER);
            ServiceServer = new SocketServer(new ConnectionManager(), ServicePort);
            ServiceServer.HandlerManager = serviceHandler;
            ServiceServer.Start();


            Client = new RequestClient(LoginHost, LoginPort);
            Client.RegTaskHandlerFromAssembly(this.GetType().Assembly);
            Client.UseSendThreadUpdate = true;
            Client.OnConnectCompleted  = (s, e) =>
            {
                if (e.Success)
                {
                    int currentPlayer = 0;
                    using (var db = new DataBaseContext.GameDb(Connection))
                    {
                        currentPlayer = db.TBGAmePlayer.Count();
                    }
                    var request = Client.CreateRequest <G2L_Reg, L2G_Reg>();
                    request.RequestMessage.ServerID      = ServerID;
                    request.RequestMessage.Port          = this.port;
                    request.RequestMessage.Host          = serverHostName;
                    request.RequestMessage.ServiceHost   = ServiceHost;
                    request.RequestMessage.ServicesProt  = ServicePort;
                    request.RequestMessage.MaxPlayer     = 100000; //最大玩家数
                    request.RequestMessage.CurrentPlayer = currentPlayer;
                    request.RequestMessage.Version       = ProtoTool.GetVersion();
                    request.OnCompleted = (success, r) =>
                    {
                        if (success && r.Code == ErrorCode.OK)
                        {
                            Debuger.Log("Server Reg Success!");
                        }
                    };
                    request.SendRequestSync();
                }
                else
                {
                    Debuger.Log("Can't connect LoginServer!");
                    Stop();
                }
            };
            Client.OnDisconnect = (s, e) =>
            {
                Debuger.Log("Can't connect LoginServer!");
                Stop();
            };
            Client.Connect();
        }