public function onClose(WebSocketConnection $connection)
 {
     if ($this->isSubscribed($connection)) {
         $this->unsubscribe($connection);
     }
     $this->connections = $this->connections->filter(function ($c) use($connection) {
         return $c !== $connection;
     });
 }
예제 #2
0
 public function closeTable(Table $table)
 {
     $tableLoop = $this->getTableLoop($table);
     if ($tableLoop) {
         $tableLoop->cancel();
     }
     $this->logger->info('Closing table', ['id' => $table->getId()]);
     $this->tables = $this->tables->filter(function (Table $t) use($table) {
         return $t !== $table;
     });
 }
예제 #3
0
 /**
  * @param string $class
  * @param int    $timeout
  *
  * @return Promise
  */
 public function waitOnMessage($class, $timeout = 3)
 {
     $deferred = new Deferred();
     $this->messageQueue[] = ['class' => $class, 'deferred' => $deferred];
     return \Blackjack\Promise\timeout($deferred->promise(), $timeout)->otherwise(function (\Exception $e) use($deferred) {
         $this->messageQueue = $this->messageQueue->filter(function ($entry) use($deferred) {
             return $entry['deferred'] !== $deferred;
         });
         return \React\Promise\reject($e);
     });
 }
 private function handlePlayerDisconnection(Connection $connection)
 {
     $player = $connection->getPlayer();
     $seat = $player->getSeat();
     $playerConnection = $this->getPlayerConnection($player);
     $this->connections = $this->connections->filter(function ($c) use($playerConnection) {
         return $c !== $playerConnection;
     });
     $this->removePlayerFromSeat($seat, $assignBot = true);
     if (!$seat->getTable()->onlySeatedByBots() || count($this->tableManager->getTables()) === 1) {
         // Skip destroying table if this table is the last one standing
         // Or there's at least one computer bot connected via TCP
         return;
     }
     $this->destroyTable($seat->getTable());
 }
 public function removeConnection(WebSocketConnection $connection)
 {
     $this->connections = $this->connections->filter(function ($c) use($connection) {
         return $c !== $connection;
     });
 }