Beispiel #1
0
 public override void OnClientDisconnected(RpcClientInfo Info)
 {
     foreach (Realm Rm in GetRealms())
         if (Rm.RpcInfo != null && Rm.RpcInfo.RpcID == Info.RpcID)
         {
             Log.Notice("AccountMgr", "Realm Offline : " + Rm.Name);
             Rm.RpcInfo = null;
         }
 }
Beispiel #2
0
        public T GetObject <T>(string Name) where T : RpcObject
        {
            RpcClientInfo Info = Mgr.GetClient(Name);

            if (Info == null)
            {
                Log.Error("RpcServer", "Can not find client : " + Name);
                return(null);
            }

            return(GetObject <T>(Info));
        }
Beispiel #3
0
        public T GetClientObject <T>(int RpcID) where T : RpcObject
        {
            RpcClientInfo Info = GetServerObject <ServerMgr>().GetClient(RpcID);

            if (Info == null)
            {
                return(GetLocalObject <T>());
            }
            else
            {
                return(RpcServer.GetObject <T>(Info));
            }
        }
Beispiel #4
0
        public bool Connected(int RpcID)
        {
            RpcClientInfo Info = GetClient(RpcID);

            if (Info == null)
            {
                return(false);
            }

            Log.Success("ServerMgr", Info.Description() + " | Connected");

            foreach (Type type in Server.RegisteredTypes[0])
            {
                Server.GetLocalObject(type).OnClientConnected(Info);
            }

            foreach (RpcClientInfo ConnectedClient in GetClients())
            {
                if (Info.RpcID == ConnectedClient.RpcID)
                {
                    continue;
                }

                try
                {
                    foreach (Type type in Server.RegisteredTypes[1])
                    {
                        Log.Debug("ServerMgr", Info.Name + " Send to : " + ConnectedClient.Name + ",T=" + type);
                        RpcServer.GetObject(type, ConnectedClient.Ip, ConnectedClient.Port).OnClientConnected(Info);
                        RpcServer.GetObject(type, Info.Ip, Info.Port).OnClientConnected(ConnectedClient);
                    }
                }
                catch (Exception e)
                {
                    Log.Error("ServerMgr", e.ToString());
                    Log.Notice("ServerMgr", "Invalid : " + ConnectedClient.Description());
                }
            }


            Info.Connected = true;

            return(true);
        }
Beispiel #5
0
        public RpcClientInfo Connect(string Name, string Ip)
        {
            RpcClientInfo Info = GetClient(Name);

            if (Info == null)
            {
                int RpcId = BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0);

                Info           = new RpcClientInfo(Name, Ip, ++StartingPort, RpcId);
                Info.Connected = false;

                lock (Clients)
                    Clients.Add(Info);
            }

            Log.Debug("ServerMgr", Info.Description() + " | Connecting");

            return(Info);
        }
Beispiel #6
0
        public RpcClientInfo Connect(string Name, string Ip)
        {
            RpcClientInfo Info = GetClient(Name);
            if (Info == null)
            {

                int RpcId = BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0);

                Info = new RpcClientInfo(Name, Ip, ++StartingPort, RpcId);
                Info.Connected = false;

                lock (Clients)
                    Clients.Add(Info);
            }

            Log.Debug("ServerMgr", Info.Description() + " | Connecting");

            return Info;
        }
Beispiel #7
0
        public bool RegisterRealm(Realm Rm,RpcClientInfo Info)
        {
            Log.Debug("AccountMgr", "Realm Registering : " + Rm.Name);

            if (Rm == null)
                return false;

            Rm.GenerateName();

            Realm Already = GetRealm(Rm.RealmId);
            if (Already == null)
            {
                Already = AccountDB.SelectObject<Realm>("RealmId=" + Rm.RealmId);
                if (Already == null)
                    AccountDB.AddObject(Rm);
            }

            if (Already != null)
            {
                Rm.ObjectId = Already.ObjectId;
                Realms.Remove(Already);
            }

            Rm.RpcInfo = Info;
            Rm.Dirty = true;

            AccountDB.SaveObject(Rm);
            Realms.Add(Rm);

            if (Info != null)
            {
                Log.Success("AccountMgr", "Realm Online : " + Rm.Name);
            }
            else
                Log.Success("AccountMgr", "Realm loaded : " + Rm.Name);

            return true;
        }
Beispiel #8
0
        public bool UpdateRealm(RpcClientInfo Info, byte RealmId)
        {
            Realm Rm = GetRealm(RealmId);

            if (Rm != null)
            {
                Log.Success("Realm", "Realm (" + Rm.Name + ") online at " + Info.Ip+":"+Info.Port);
                Rm.Info = Info;
            }
            else
            {
                Log.Error("UpdateRealm", "Realm (" + RealmId + ") missing : Please complete the table 'realm'");
                return false;
            }

            return true;
        }
Beispiel #9
0
 static public T GetObject <T>(RpcClientInfo Info) where T : RpcObject
 {
     return(GetObject(typeof(T), Info.Ip, Info.Port) as T);
 }
Beispiel #10
0
 public virtual void OnClientDisconnected(RpcClientInfo Info)
 {
 }
Beispiel #11
0
        public bool Connect(string Ip, int Port)
        {
            Log.Debug("RpcClient", "Connect : " + Ip + ":" + Port);

            RpcServerIp   = Ip;
            RpcServerPort = Port;
            Connecting    = true;

            try
            {
                if (Channel != null)
                {
                    return(false);
                }

                Log.Debug("RpcClient", "Connecting to : " + Ip);

                if (!Pinger.IsAlive)
                {
                    Pinger.Start();
                }

                Channel = new TcpClientChannel(ServerName, null);
                ChannelServices.RegisterChannel(Channel, false);

                Mgr  = Activator.GetObject(typeof(ServerMgr), "tcp://" + Ip + ":" + Port + "/" + typeof(ServerMgr).Name) as ServerMgr;
                Info = Mgr.Connect(ServerName, ServerIp);

                if (Info == null)
                {
                    return(false);
                }

                Log.Debug("RpcClient", "Listening on : " + ServerIp + ":" + Info.Port);

                ServerChannel = new TcpServerChannel("Server" + Info.RpcID, Info.Port);
                ChannelServices.RegisterChannel(ServerChannel, false);

                RegisteredTypes = RpcObject.RegisterHandlers(false, AllowedID);
                foreach (Type t in RegisteredTypes[1])
                {
                    RpcServer.GetObject(t, Info.Ip, Info.Port).MyInfo = Info;
                }

                Mgr.Connected(Info.RpcID);

                Log.Success("RpcClient", "Connected to : " + ServerIp + ":" + RpcServerPort + ", Listen on : " + Info.Ip + ":" + Info.Port);

                foreach (Type t in RegisteredTypes[1])
                {
                    RpcServer.GetObject(t, Info.Ip, Info.Port).OnServerConnected();
                }

                Connecting = false;
            }
            catch (Exception e)
            {
                Log.Error("RpcClient", e.ToString());
                Log.Notice("RpcClient", "Can not start RPC : " + Ip + ":" + Port);

                Connecting = false;
                Mgr        = null;
                Info       = null;

                return(false);
            }

            return(true);
        }
Beispiel #12
0
 public override void OnClientDisconnected(RpcClientInfo Info)
 {
     Log.Notice("ClientMgr", Info.Description() + " | Disconnected");
 }
Beispiel #13
0
 public override void OnClientDisconnected(RpcClientInfo Info)
 {
     Log.Notice("ClientMgr", Info.Description() + " | Disconnected");
 }
Beispiel #14
0
        public void RegisterMaps(MapServerInfo MapInfo, RpcClientInfo RpcInfo)
        {
            MapServerInfo Info = GetMapInfo(MapInfo.MapAdress);

            if (Info == null)
                MapsInfo.Add(MapInfo);
            else
                Info.RpcInfo = RpcInfo;

            MapInfo.RpcInfo = RpcInfo;
            Log.Success("MapMgr", "Map online : " + MapInfo.MapAdress);
        }
Beispiel #15
0
 public override void OnClientDisconnected(RpcClientInfo Info)
 {
     foreach(MapServerInfo MapInfo in MapsInfo.ToArray())
         if (MapInfo.RpcInfo.RpcID == Info.RpcID)
         {
             Log.Error("MapMgr", "MapServer disconnected : " + MapInfo.MapAdress);
             MapsInfo.Remove(MapInfo);
         }
 }
Beispiel #16
0
 public override void  OnClientDisconnected(RpcClientInfo Info)
 {
     Realm Rm = GetRealmByRpc(Info.RpcID);
     if (Rm != null && Rm.Info.RpcID == Info.RpcID)
     {
         Log.Error("Realm", "Realm offline : " + Rm.Name);
         Rm.Info = null;
     }
 }
Beispiel #17
0
        public virtual void OnClientDisconnected(RpcClientInfo Info)
        {

        }
Beispiel #18
0
 public override void OnClientDisconnected(RpcClientInfo Rpc)
 {
     Log.Info("CharMgr", "Déconnection de l'user : "******"CharMgr", "Déconnection du world : " + Info._Info.Name);
             Info.RpcID = 0;
         }
 }