Allow for instances as well as class names to be passed as queue handlers and iomanagers.
This commit is contained in:
parent
845f051c2f
commit
23c0d663d6
@ -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())
|
||||
{
|
||||
|
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user