protected virtual void OnPlayerGroupLobbyMatchHandler(BasePlayerGroup basePlayerGroup)
 {
     EventHandler<BasePlayerGroup> handler = PlayerGroupLobbyMatchHandler;
     if (handler != null) handler(this, basePlayerGroup);
 }
 public void EnqueNewPlayers(BasePlayerGroup basePlayerGroup)
 {
     var dateTime = DateTime.UtcNow;
     basePlayerGroup.Players.ToList().ForEach(x => x.EnqueueTime = dateTime);
     _playerQueue.Enqueue(basePlayerGroup);
 }
 protected void AddPlayerToProcessing(BasePlayerGroup basePlayerGroup)
 {
     _playerBuffer.Post(basePlayerGroup);
 }
 protected abstract void ProcessPlayerGroup(BasePlayerGroup basePlayerGroup);
 protected override void ProcessPlayerGroup(BasePlayerGroup basePlayerGroup)
 {
     var processor = SelectLeastBusyProcessor();
     processor.EnqueNewPlayers(basePlayerGroup);
 }
 public void NewPlayerGroupConnection(BasePlayerGroup basePlayerGroup)
 {
     AddPlayerToProcessing(basePlayerGroup);
 }