protected virtual void OnClientPing(int time, string message) { ClientPing?.Invoke(this, new ClientEventArgs() { clientPingTime = time, clientPingMessage = message }); }
public void ReportPing(ClientWrapper client) { if (ClientPing.ContainsKey(client.ClientIdentifier)) { ClientPing[client.ClientIdentifier] = UnixTimeNow(); } }
static bool Prefix(PingsMessage __instance) { var pings = __instance.m_pings = new ClientPing[16]; for (int i = 0; i < 16; i++) pings[i] = new ClientPing(); return false; }
public async void SendPing() { var command = new ClientPing() { timestamp = DateTime.Now.Ticks }; await Send(command); }
internal void AddClient(ref ClientWrapper client) { if (client.ClientIdentifier == -1) { CurrentIdentifier++; client.ClientIdentifier = CurrentIdentifier; Clients.Add(CurrentIdentifier, client); PacketErrors.Add(CurrentIdentifier, 0); ClientPing.Add(CurrentIdentifier, UnixTimeNow()); } }
public static Session Deserialize(string data) { try { var session = new Session(); var nodes = MiniYaml.FromString(data); foreach (var node in nodes) { var strings = node.Key.Split('@'); switch (strings[0]) { case "Client": session.Clients.Add(Client.Deserialize(node.Value)); break; case "ClientPing": session.ClientPings.Add(ClientPing.Deserialize(node.Value)); break; case "GlobalSettings": session.GlobalSettings = Global.Deserialize(node.Value); break; case "Slot": var s = Slot.Deserialize(node.Value); session.Slots.Add(s.PlayerReference, s); break; case "DisabledSpawnPoints": session.DisabledSpawnPoints = FieldLoader.GetValue <HashSet <int> >("DisabledSpawnPoints", node.Value.Value); break; } } return(session); } catch (YamlException) { throw new YamlException("Session deserialized invalid MiniYaml:\n{0}".F(data)); } catch (InvalidOperationException) { throw new YamlException("Session deserialized invalid MiniYaml:\n{0}".F(data)); } }
private void DoServerTick(object obj, ElapsedEventArgs eventargs) { foreach (var c in Clients.Values.ToArray()) { if (c != null) { new KeepAlive(c).Write(); if (ClientPing.ContainsKey(c.ClientIdentifier)) { if ((UnixTimeNow() - ClientPing[c.ClientIdentifier]) > 2000) { Globals.DisconnectClient(c, "Ping timeout"); } } } } }
public static Session Deserialize(string data) { try { var session = new Session(); var nodes = MiniYaml.FromString(data); foreach (var node in nodes) { var strings = node.Key.Split('@'); switch (strings[0]) { case "Client": session.Clients.Add(Client.Deserialize(node.Value)); break; case "ClientPing": session.ClientPings.Add(ClientPing.Deserialize(node.Value)); break; case "GlobalSettings": session.GlobalSettings = Global.Deserialize(node.Value); break; case "Slot": var s = Slot.Deserialize(node.Value); session.Slots.Add(s.PlayerReference, s); break; } } return(session); } catch (InvalidOperationException) { Log.Write("exception", "Session deserialized invalid MiniYaml:\n{0}".F(data)); throw; } }
private void DoServerTick(object obj, ElapsedEventArgs eventargs) { foreach (var c in Clients.Values.ToArray()) { if (c != null) { new KeepAlive(c).Write(); /*if ((UnixTimeNow() - c.GetLastPing) > 20000) * { * PacketError(c, new Exception("Ping timeout")); //Register as packet error as client didn't ping for more than 20 seconds. * }*/ if (ClientPing.ContainsKey(c.ClientIdentifier)) { if ((UnixTimeNow() - ClientPing[c.ClientIdentifier]) > 2000) { PacketError(c, new Exception("Ping timeout")); } } } } }
public static void HandlePing(WorldSession session, ClientPing ping) { session.Heartbeat.OnHeartbeat(); }