Revert "Allow for instances as well as class names to be passed as queue handlers and iomanagers."
Going to use brion's SpawningDaemon instead This reverts commit bd72e8b96e1bc360ba46a1864c6121f3b5f11235.
This commit is contained in:
parent
bd72e8b96e
commit
ef7db60fed
@ -31,7 +31,6 @@
|
||||
|
||||
abstract class IoManager
|
||||
{
|
||||
const GLOBAL_SINGLE_ONLY = -1;
|
||||
const SINGLE_ONLY = 0;
|
||||
const INSTANCE_PER_SITE = 1;
|
||||
const INSTANCE_PER_PROCESS = 2;
|
||||
|
@ -32,7 +32,6 @@ class IoMaster
|
||||
public $id;
|
||||
|
||||
protected $multiSite = false;
|
||||
protected $includeGlobalSingletons = true;
|
||||
protected $managers = array();
|
||||
protected $singletons = array();
|
||||
|
||||
@ -48,9 +47,8 @@ class IoMaster
|
||||
$this->monitor = new QueueMonitor();
|
||||
}
|
||||
|
||||
public function init($multiSite=null, $includeGlobalSingletons = true)
|
||||
public function init($multiSite=null)
|
||||
{
|
||||
$this->includeGlobalSingletons = $includeGlobalSingletons;
|
||||
if ($multiSite !== null) {
|
||||
$this->multiSite = $multiSite;
|
||||
}
|
||||
@ -109,7 +107,7 @@ class IoMaster
|
||||
*/
|
||||
protected function instantiate($class)
|
||||
{
|
||||
if (is_string($class) && isset($this->singletons[$class])) {
|
||||
if (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'));
|
||||
@ -118,35 +116,26 @@ class IoMaster
|
||||
|
||||
$manager = $this->getManager($class);
|
||||
|
||||
$caps = $manager->multiSite();
|
||||
if ($this->multiSite) {
|
||||
$caps = $manager->multiSite();
|
||||
if ($caps == IoManager::SINGLE_ONLY) {
|
||||
throw new Exception("$class can't run with --all; aborting.");
|
||||
}
|
||||
if ($caps == IoManager::INSTANCE_PER_PROCESS ||
|
||||
( $this->includeGlobalSingletons && $caps == IoManager::GLOBAL_SINGLE_ONLY )) {
|
||||
if ($caps == IoManager::INSTANCE_PER_PROCESS) {
|
||||
// Save this guy for later!
|
||||
// We'll only need the one to cover multiple sites.
|
||||
if (is_string($class)){
|
||||
$this->singletons[$class] = $manager;
|
||||
}
|
||||
$manager->addSite(common_config('site', 'server'));
|
||||
}
|
||||
}
|
||||
|
||||
if( $this->includeGlobalSingletons || $caps != IoManager::GLOBAL_SINGLE_ONLY ) {
|
||||
$this->managers[] = $manager;
|
||||
}
|
||||
}
|
||||
|
||||
protected function getManager($class)
|
||||
{
|
||||
if(is_object($class)){
|
||||
return $class;
|
||||
}else{
|
||||
return call_user_func(array($class, 'get'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Basic run loop...
|
||||
|
@ -119,9 +119,7 @@ abstract class QueueManager extends IoManager
|
||||
{
|
||||
if (isset($this->handlers[$queue])) {
|
||||
$class = $this->handlers[$queue];
|
||||
if(is_object($class)) {
|
||||
return $class;
|
||||
} else if (class_exists($class)) {
|
||||
if (class_exists($class)) {
|
||||
return new $class();
|
||||
} else {
|
||||
common_log(LOG_ERR, "Nonexistent handler class '$class' for queue '$queue'");
|
||||
@ -184,7 +182,7 @@ abstract class QueueManager extends IoManager
|
||||
* Only registered transports will be reliably picked up!
|
||||
*
|
||||
* @param string $transport
|
||||
* @param string $class class name or object instance
|
||||
* @param string $class
|
||||
*/
|
||||
public function connect($transport, $class)
|
||||
{
|
||||
|
@ -122,7 +122,7 @@ class QueueDaemon extends Daemon
|
||||
if ($this->threads > 1) {
|
||||
return $this->runThreads();
|
||||
} else {
|
||||
return $this->runLoop(true);
|
||||
return $this->runLoop();
|
||||
}
|
||||
}
|
||||
|
||||
@ -176,8 +176,7 @@ class QueueDaemon extends Daemon
|
||||
{
|
||||
$this->set_id($this->get_id() . "." . $thread);
|
||||
$this->resetDb();
|
||||
//only include global singletons on the first thread
|
||||
$this->runLoop($thread == 1);
|
||||
$this->runLoop();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -214,18 +213,14 @@ class QueueDaemon extends Daemon
|
||||
*
|
||||
* Most of the time this won't need to be overridden in a subclass.
|
||||
*
|
||||
* @param boolean $includeGlobalSingletons Include IoManagers that are
|
||||
* global singletons (should only be one instance - regardless of how
|
||||
* many processes or sites there are)
|
||||
*
|
||||
* @return boolean true on success, false on failure
|
||||
*/
|
||||
function runLoop($includeGlobalSingletons)
|
||||
function runLoop()
|
||||
{
|
||||
$this->log(LOG_INFO, 'checking for queued notices');
|
||||
|
||||
$master = new IoMaster($this->get_id());
|
||||
$master->init($this->all, $includeGlobalSingletons);
|
||||
$master->init($this->all);
|
||||
$master->service();
|
||||
|
||||
$this->log(LOG_INFO, 'finished servicing the queue');
|
||||
|
Loading…
x
Reference in New Issue
Block a user