/** * {@inheritdoc} */ public function __construct(ClientInterface $client) { if (!$client->getProfile()->supportsCommands(array('multi', 'exec', 'discard'))) { throw new ClientException("The current profile does not support 'MULTI', 'EXEC' and 'DISCARD'."); } parent::__construct($client); }
/** * Checks if the passed client instance satisfies the required conditions * needed to initialize the transaction object. * * @param ClientInterface $client Client instance used by the transaction object. * * @throws NotSupportedException */ private function assertClient(ClientInterface $client) { if ($client->getConnection() instanceof AggregateConnectionInterface) { throw new NotSupportedException('Cannot initialize a MULTI/EXEC transaction over aggregate connections.'); } if (!$client->getProfile()->supportsCommands(array('MULTI', 'EXEC', 'DISCARD'))) { throw new NotSupportedException('The current profile does not support MULTI, EXEC and DISCARD.'); } }
/** * Checks if the passed client instance satisfies the required conditions * needed to initialize a monitor context. * * @param ClientInterface $client Client instance used by the context. */ private function checkCapabilities(ClientInterface $client) { if ($client->getConnection() instanceof AggregatedConnectionInterface) { throw new NotSupportedException('Cannot initialize a monitor context when using aggregated connections'); } if ($client->getProfile()->supportsCommand('monitor') === false) { throw new NotSupportedException('The current profile does not support the MONITOR command'); } }
/** * Checks if the passed client instance satisfies the required conditions * needed to initialize a monitor consumer. * * @param ClientInterface $client Client instance used by the consumer. * * @throws NotSupportedException */ private function assertClient(ClientInterface $client) { if ($client->getConnection() instanceof AggregateConnectionInterface) { throw new NotSupportedException('Cannot initialize a monitor consumer over aggregate connections.'); } if ($client->getProfile()->supportsCommand('MONITOR') === false) { throw new NotSupportedException("The current profile does not support 'MONITOR'."); } }
/** * Checks if the passed client instance satisfies the required conditions * needed to initialize a Publish / Subscribe context. * * @param ClientInterface $client Client instance used by the context. */ private function checkCapabilities(ClientInterface $client) { if ($client->getConnection() instanceof AggregatedConnectionInterface) { throw new NotSupportedException('Cannot initialize a PUB/SUB context when using aggregated connections'); } $commands = array('publish', 'subscribe', 'unsubscribe', 'psubscribe', 'punsubscribe'); if ($client->getProfile()->supportsCommands($commands) === false) { throw new NotSupportedException('The current profile does not support PUB/SUB related commands'); } }
/** * Ensures that the client supports the specified Redis command required to * fetch elements from the server to perform the iteration. * * @param ClientInterface $client Client connected to Redis. * @param string $commandID Command ID. * * @throws NotSupportedException */ protected function requiredCommand(ClientInterface $client, $commandID) { if (!$client->getProfile()->supportsCommand($commandID)) { throw new NotSupportedException("The current profile does not support '{$commandID}'."); } }
/** * Checks if the passed client instance satisfies the required conditions * needed to initialize a transaction context. * * @param ClientInterface $client Client instance used by the context. */ private function checkCapabilities(ClientInterface $client) { if ($client->getConnection() instanceof AggregatedConnectionInterface) { throw new NotSupportedException('Cannot initialize a MULTI/EXEC context when using aggregated connections'); } $profile = $client->getProfile(); if ($profile->supportsCommands(array('multi', 'exec', 'discard')) === false) { throw new NotSupportedException('The current profile does not support MULTI, EXEC and DISCARD'); } $this->canWatch = $profile->supportsCommands(array('watch', 'unwatch')); }
/** * Ensures that the client instance supports the specified Redis * command required to fetch elements from the server to perform * the iteration. * * @param ClientInterface $client Client connected to Redis. * @param string $commandID Command ID. */ protected function requiredCommand(ClientInterface $client, $commandID) { if (!$client->getProfile()->supportsCommand($commandID)) { throw new NotSupportedException("The specified server profile does not support the `{$commandID}` command."); } }