Add inline (p)subscribe via options on Predis\PubSubContext initialization.

This commit is contained in:
Daniele Alessandri
2011-02-12 11:43:37 +01:00
parent 6a2e4d0396
commit 79372cb99b
2 changed files with 24 additions and 4 deletions
+3
View File
@@ -6,6 +6,9 @@ v0.6.4 (2011-??-??)
specify an external callback (or any callable object) that gets invoked
whenever a transaction is aborted by the server.
* Added inline (p)subscribtion via options when initializing an instance of
Predis\PubSubContext.
v0.6.3 (2011-01-01)
* New commands available in the Redis v2.2 profile (dev):
- Strings: SETRANGE, GETRANGE, SETBIT, GETBIT
+21 -4
View File
@@ -287,8 +287,8 @@ class Client {
return $transBlock !== null ? $multi->execute($transBlock) : $multi;
}
public function pubSubContext() {
return new PubSubContext($this);
public function pubSubContext(Array $options = null) {
return new PubSubContext($this, $options);
}
}
@@ -1047,12 +1047,16 @@ class PubSubContext implements \Iterator {
const STATUS_SUBSCRIBED = 0x0010;
const STATUS_PSUBSCRIBED = 0x0100;
private $_redisClient, $_position;
private $_redisClient, $_position, $_options;
public function __construct(Client $redisClient) {
public function __construct(Client $redisClient, Array $options = null) {
$this->checkCapabilities($redisClient);
$this->_options = $options ?: array();
$this->_redisClient = $redisClient;
$this->_statusFlags = self::STATUS_VALID;
$this->genericSubscribeInit('subscribe');
$this->genericSubscribeInit('psubscribe');
}
public function __destruct() {
@@ -1074,6 +1078,19 @@ class PubSubContext implements \Iterator {
}
}
private function genericSubscribeInit($subscribeAction) {
if (isset($this->_options[$subscribeAction])) {
if (is_array($this->_options[$subscribeAction])) {
foreach ($this->_options[$subscribeAction] as $subscription) {
$this->$subscribeAction($subscription);
}
}
else {
$this->$subscribeAction($this->_options[$subscribeAction]);
}
}
}
private function isFlagSet($value) {
return ($this->_statusFlags & $value) === $value;
}