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; } }
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)); }
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)); } }
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); }
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); }
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; }
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; }
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; }
static public T GetObject <T>(RpcClientInfo Info) where T : RpcObject { return(GetObject(typeof(T), Info.Ip, Info.Port) as T); }
public virtual void OnClientDisconnected(RpcClientInfo Info) { }
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); }
public override void OnClientDisconnected(RpcClientInfo Info) { Log.Notice("ClientMgr", Info.Description() + " | Disconnected"); }
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); }
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); } }
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; } }
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; } }