public function onClose(WebSocketConnection $connection) { if ($this->isSubscribed($connection)) { $this->unsubscribe($connection); } $this->connections = $this->connections->filter(function ($c) use($connection) { return $c !== $connection; }); }
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; }); }
/** * @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; }); }