Use the shared initializer to initialize Pub/Sub and accept callbacks.

When a callback is specified, the client does not return a new instance
of Predis\PubSubContext but it invokes that callback on each message
received. The context can be aborted simply by returning FALSE from the
callback.
This commit is contained in:
Daniele Alessandri
2011-06-04 18:23:10 +02:00
parent 8c207f71bd
commit 65c0336d2f
+14 -2
View File
@@ -201,8 +201,20 @@ class Client {
return isset($block) ? $transaction->execute($block) : $transaction;
}
public function pubSubContext(Array $options = null) {
return new PubSubContext($this, $options);
public function pubSubContext(/* arguments */) {
return $this->sharedInitializer(func_get_args(), 'initPubSub');
}
protected function initPubSub(Array $options = null, $block = null) {
$pubsub = new PubSubContext($this, $options);
if (!isset($block)) {
return $pubsub;
}
foreach ($pubsub as $message) {
if ($block($pubsub, $message) === false) {
$pubsub->closeContext();
}
}
}
public function monitor() {