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); }
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; }