ResetTimeout() 공개 메소드

public ResetTimeout ( ) : void
리턴 void
예제 #1
0
        static bool AssignSlot(ClientConnection conn, int id)
        {
            if (!conn.AssignSlot(id))
            {
                return(false);
            }

            conn.State = SlotState.ASSIGNING_SLOT;
            conn.ResetTimeout();

            var slot = Terraria.Netplay.Clients[id] as ServerSlot;

            slot.remoteAddress = conn.RemoteAddress;
            slot.conn          = conn;

            conn.Player.whoAmi = id;
            Main.player[id]    = conn.Player;

            var age = conn.Age;

            if (age > TimeSpan.FromMilliseconds(500))
            {
                ProgramLog.Log("Slot {1} assigned to {0} after {2}.", slot.remoteAddress, id, age);
            }
            else
            {
                ProgramLog.Log("Slot {1} assigned to {0}.", slot.remoteAddress, id);
            }

            return(true);
        }
예제 #2
0
        static int AssignSlotOrQueue(ClientConnection conn, int queue)
        {
            int id = -1;

            conn.Queue = queue;

            if (queue == 3)
            {
                if (privFreeSlots.Count > 0)
                {
                    // use other slots for highest priority connections first
                    id              = privFreeSlots.Pop();
                    privSlotsInUse += 1;
                }
                else if (freeSlots.Count > 0)
                {
                    id = freeSlots.Pop();
                }
            }
            else if (freeSlots.Count > 0 && freeSlots.Count > (privSlotsInUse - overlimitSlots))
            {
                id = freeSlots.Pop();
            }

            if (id == -1)
            {
                conn.State = SlotState.QUEUED;
                conn.ResetTimeout();

                queues[queue].Enqueue(conn);

                ProgramLog.Log("Connection {0} queued with priority {1}.", conn.RemoteAddress, queue);

                return(-1);
            }

            if (AssignSlot(conn, id))
            {
                return(id);
            }

            PushSlot(id);
            return(-2);
        }
        static int AssignSlotOrQueue(ClientConnection conn, int queue)
        {
            int id = -1;

            conn.Queue = queue;

            if (queue == 3)
            {
                if (privFreeSlots.Count > 0)
                {
                    // use other slots for highest priority connections first
                    id = privFreeSlots.Pop();
                    privSlotsInUse += 1;
                }
                else if (freeSlots.Count > 0)
                    id = freeSlots.Pop();
            }
            else if (freeSlots.Count > 0 && freeSlots.Count > (privSlotsInUse - overlimitSlots))
                id = freeSlots.Pop();

            if (id == -1)
            {
                conn.State = SlotState.QUEUED;
                conn.ResetTimeout();

                queues[queue].Enqueue(conn);

                ProgramLog.Log("Connection {0} queued with priority {1}.", conn.RemoteAddress, queue);

                return -1;
            }

            if (AssignSlot(conn, id))
                return id;

            PushSlot(id);
            return -2;
        }
        static bool AssignSlot(ClientConnection conn, int id)
        {
            if (!conn.AssignSlot(id))
                return false;

            conn.State = SlotState.ASSIGNING_SLOT;
            conn.ResetTimeout();

            var slot = Terraria.Netplay.Clients[id] as ServerSlot;
            slot.remoteAddress = conn.RemoteAddress;
            slot.conn = conn;

            conn.Player.whoAmi = id;
            Main.player[id] = conn.Player;

            var age = conn.Age;
            if (age > TimeSpan.FromMilliseconds(500))
                ProgramLog.Log("Slot {1} assigned to {0} after {2}.", slot.remoteAddress, id, age);
            else
                ProgramLog.Log("Slot {1} assigned to {0}.", slot.remoteAddress, id);

            return true;
        }