Пример #1
0
        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));
        }
Пример #2
0
        public int GetNumberOfServers(ServerIdPacket.ServerType type)
        {
            ServerGroupByType group = groups.Find(g => g.Type == type);

            if (group == null)
            {
                return(0);
            }
            return(group.Count);
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
 public ServerGroupByType(ServerIdPacket.ServerType _type)
 {
     Type    = _type;
     servers = new List <ServerConnectionState>();
 }