static bool AssignSlot(ClientConnection conn, int id) { if (!conn.AssignSlot(id)) { return(false); } conn.State = SlotState.ASSIGNING_SLOT; conn.ResetTimeout(); var slot = NetPlay.slots[id]; slot.remoteAddress = conn.RemoteAddress; slot.conn = conn; conn.Player.whoAmi = id; Main.players[id] = conn.Player; var age = conn.Age; if (age > TimeSpan.FromMilliseconds(500)) { ProgramLog.Debug.Log("Slot {1} assigned to {0} after {2}.", slot.remoteAddress, id, age); } else { ProgramLog.Debug.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.Debug.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.Debug.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 = NetPlay.slots[id]; slot.remoteAddress = conn.RemoteAddress; slot.conn = conn; conn.Player.whoAmi = id; Main.players[id] = conn.Player; var age = conn.Age; if (age > TimeSpan.FromMilliseconds (500)) ProgramLog.Debug.Log ("Slot {1} assigned to {0} after {2}.", slot.remoteAddress, id, age); else ProgramLog.Debug.Log ("Slot {1} assigned to {0}.", slot.remoteAddress, id); return true; }