public $id;
protected $multiSite = false;
- protected $includeGlobalSingletons = true;
protected $managers = array();
protected $singletons = array();
$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;
}
*/
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'));
$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'));
}
/**
{
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'");
* 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)
{
if ($this->threads > 1) {
return $this->runThreads();
} else {
- return $this->runLoop(true);
+ return $this->runLoop();
}
}
{
$this->set_id($this->get_id() . "." . $thread);
$this->resetDb();
- //only include global singletons on the first thread
- $this->runLoop($thread == 1);
+ $this->runLoop();
}
/**
*
* 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');