public ServerConnectionState Find(ServerIdPacket.ServerType type, int gameId) { ServerGroupByType group = groups.Find(g => g.Type == type); if (group == null) { return(null); } return(group.Find(gameId)); }
public int GetNumberOfServers(ServerIdPacket.ServerType type) { ServerGroupByType group = groups.Find(g => g.Type == type); if (group == null) { return(0); } return(group.Count); }
public bool Add(ServerConnectionState server) { ServerIdPacket.ServerType type = server.serverType; ServerGroupByType group = groups.Find(g => g.Type == type); if (group == null) { group = new ServerGroupByType(type); groups.Add(group); } return(group.Add(server)); }
public List <int> GetGameServerIds() { List <int> serverIds = new List <int>(); ServerIdPacket.ServerType type = ServerIdPacket.ServerType.Game; ServerGroupByType group = groups.Find(g => g.Type == type); if (group != null) { foreach (var g in group) { serverIds.Add(g.gameId); } } return(serverIds); }
public bool ProcessIdPackets()// TODO: only process id packets { List <BasePacket> packets = RetrieveData(); if (packets.Count == 0) { // We're still waiting for their packet return(true); } else if (packets.Count == 1) { BasePacket packet = packets[0]; ServerIdPacket id = packet as ServerIdPacket; if (id != null) { gameId = id.Id; serverType = id.Type; int mapId = id.MapId; versionAndHandshakeComplete = true; IntrepidSerialize.ReturnToPool(packet); return(true); } /* if (packet is ServerPingHopperPacket) * { * HandleServerHopping(packet as ServerPingHopperPacket); * return true; * }*/ IntrepidSerialize.ReturnToPool(packet); } // If we're here, it means we either received more than one packet // or it wasn't a ServerIdPacket, which means the server isn't behaving // properly return(false); }
public ServerGroupByType(ServerIdPacket.ServerType _type) { Type = _type; servers = new List <ServerConnectionState>(); }