From 598072468c9fdb07df2cda9da207f123b14566ae Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Fri, 15 Jan 2010 11:13:06 -0800 Subject: [PATCH] --xmpp-only hack for queuedaemon.php to run separate queue daemon with only xmpp threads --- lib/queuemanager.php | 22 ++++++++++++++-------- lib/stompqueuemanager.php | 7 ++++++- scripts/queuedaemon.php | 5 ++++- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lib/queuemanager.php b/lib/queuemanager.php index b98e57a1ff..291174d3c4 100644 --- a/lib/queuemanager.php +++ b/lib/queuemanager.php @@ -149,11 +149,13 @@ abstract class QueueManager extends IoManager function initialize() { if (Event::handle('StartInitializeQueueManager', array($this))) { - $this->connect('plugin', 'PluginQueueHandler'); - $this->connect('omb', 'OmbQueueHandler'); - $this->connect('ping', 'PingQueueHandler'); - if (common_config('sms', 'enabled')) { - $this->connect('sms', 'SmsQueueHandler'); + if (!defined('XMPP_ONLY_FLAG')) { // hack! + $this->connect('plugin', 'PluginQueueHandler'); + $this->connect('omb', 'OmbQueueHandler'); + $this->connect('ping', 'PingQueueHandler'); + if (common_config('sms', 'enabled')) { + $this->connect('sms', 'SmsQueueHandler'); + } } // XMPP output handlers... @@ -165,10 +167,14 @@ abstract class QueueManager extends IoManager $this->connect('confirm', 'XmppConfirmHandler'); } - // For compat with old plugins not registering their own handlers. - $this->connect('plugin', 'PluginQueueHandler'); + if (!defined('XMPP_ONLY_FLAG')) { // hack! + // For compat with old plugins not registering their own handlers. + $this->connect('plugin', 'PluginQueueHandler'); + } + } + if (!defined('XMPP_ONLY_FLAG')) { // hack! + Event::handle('EndInitializeQueueManager', array($this)); } - Event::handle('EndInitializeQueueManager', array($this)); } /** diff --git a/lib/stompqueuemanager.php b/lib/stompqueuemanager.php index a7d735d1cf..00590fdb69 100644 --- a/lib/stompqueuemanager.php +++ b/lib/stompqueuemanager.php @@ -104,7 +104,12 @@ class StompQueueManager extends QueueManager */ function getQueues() { - return array_keys($this->handlers[common_config('site', 'server')]); + $site = common_config('site', 'server'); + if (empty($this->handlers[$site])) { + return array(); + } else { + return array_keys($this->handlers[$site]); + } } /** diff --git a/scripts/queuedaemon.php b/scripts/queuedaemon.php index f8bade39db..162f617e0d 100755 --- a/scripts/queuedaemon.php +++ b/scripts/queuedaemon.php @@ -21,7 +21,7 @@ define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); $shortoptions = 'fi:at:'; -$longoptions = array('id=', 'foreground', 'all', 'threads=', 'skip-xmpp'); +$longoptions = array('id=', 'foreground', 'all', 'threads=', 'skip-xmpp', 'xmpp-only'); /** * Attempts to get a count of the processors available on the current system @@ -263,6 +263,9 @@ $all = have_option('a') || have_option('--all'); if (have_option('--skip-xmpp')) { define('XMPP_EMERGENCY_FLAG', true); } +if (have_option('--xmpp-only')) { + define('XMPP_ONLY_FLAG', true); +} $daemon = new QueueDaemon($id, $daemonize, $threads, $all); $daemon->runOnce();