git.gnu.io has moved to IP address 209.51.188.249 -- please double check where you are logging in.

Commit ef7db60f authored by Craig Andrews's avatar Craig Andrews

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 bd72e8b9.
parent bd72e8b9
......@@ -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,34 +116,25 @@ 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;
}
$this->singletons[$class] = $manager;
$manager->addSite(common_config('site', 'server'));
}
}
if( $this->includeGlobalSingletons || $caps != IoManager::GLOBAL_SINGLE_ONLY ) {
$this->managers[] = $manager;
}
$this->managers[] = $manager;
}
protected function getManager($class)
{
if(is_object($class)){
return $class;
}else{
return call_user_func(array($class, 'get'));
}
return call_user_func(array($class, 'get'));
}
/**
......
......@@ -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');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment