]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Allow for instances as well as class names to be passed as queue handlers and iomanagers.
authorCraig Andrews <candrews@integralblue.com>
Sat, 23 Jan 2010 06:03:41 +0000 (01:03 -0500)
committerCraig Andrews <candrews@integralblue.com>
Sat, 23 Jan 2010 06:03:41 +0000 (01:03 -0500)
lib/iomaster.php
lib/queuemanager.php

index 004e92b3eea067f8819887a94980d0ad4eff9879..29bd677bd448457fc115eee40b492f352363dab7 100644 (file)
@@ -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())
     {
index 4eb39bfa8c72ecf75ef76630244b3a513fe42a97..b2e86b127ec9efdb9e04eb31594420f09766d079 100644 (file)
@@ -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')