summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Andrews <candrews@integralblue.com>2010-01-23 01:03:41 -0500
committerCraig Andrews <candrews@integralblue.com>2010-01-23 01:03:41 -0500
commit23c0d663d63c49183494ebb049160af633a2d2ec (patch)
tree91b93d4c73d5af935e4629dd09ea3800713d76c4
parent845f051c2f85248ef85d0a34f032792ca83f04a4 (diff)
Allow for instances as well as class names to be passed as queue handlers and iomanagers.
-rw-r--r--lib/iomaster.php10
-rw-r--r--lib/queuemanager.php6
2 files changed, 11 insertions, 5 deletions
diff --git a/lib/iomaster.php b/lib/iomaster.php
index 004e92b3e..29bd677bd 100644
--- a/lib/iomaster.php
+++ b/lib/iomaster.php
@@ -102,7 +102,7 @@ abstract class IoMaster
*/
protected function instantiate($class)
{
- if (isset($this->singletons[$class])) {
+ if (is_string($class) && isset($this->singletons[$class])) {
// Already instantiated a multi-site-capable handler.
// Just let it know it should listen to this site too!
$this->singletons[$class]->addSite(common_config('site', 'server'));
@@ -129,7 +129,11 @@ abstract class IoMaster
protected function getManager($class)
{
- return call_user_func(array($class, 'get'));
+ if(is_object($class)){
+ return $class;
+ } else {
+ return call_user_func(array($class, 'get'));
+ }
}
/**
@@ -347,7 +351,7 @@ abstract class IoMaster
* for per-queue and per-site records.
*
* @param string $key counter name
- * @param array $owners list of owner keys like 'queue:jabber' or 'site:stat01'
+ * @param array $owners list of owner keys like 'queue:xmpp' or 'site:stat01'
*/
public function stats($key, $owners=array())
{
diff --git a/lib/queuemanager.php b/lib/queuemanager.php
index 4eb39bfa8..b2e86b127 100644
--- a/lib/queuemanager.php
+++ b/lib/queuemanager.php
@@ -181,7 +181,9 @@ abstract class QueueManager extends IoManager
{
if (isset($this->handlers[$queue])) {
$class = $this->handlers[$queue];
- if (class_exists($class)) {
+ if(is_object($class)) {
+ return $class;
+ } else if (class_exists($class)) {
return new $class();
} else {
common_log(LOG_ERR, "Nonexistent handler class '$class' for queue '$queue'");
@@ -242,7 +244,7 @@ abstract class QueueManager extends IoManager
* Only registered transports will be reliably picked up!
*
* @param string $transport
- * @param string $class
+ * @param string $class class name or object instance
* @param string $group
*/
public function connect($transport, $class, $group='queuedaemon')