Commit cbabab27 authored by mmn's avatar mmn

ImPlugin classes generally require background daemons in CLI

If someone designs an ImPlugin which _doesn't_ require the queues to be
handled in background daemons then they can set the requires_cli property
to false in their class.
parent 0bd16b52
......@@ -49,6 +49,8 @@ abstract class ImPlugin extends Plugin
//list of screennames that should get all public notices
public $public = array();
protected $requires_cli = true;
/**
* normalize a screenname for comparison
*
......@@ -530,9 +532,14 @@ abstract class ImPlugin extends Plugin
*/
function onEndInitializeQueueManager($manager)
{
$manager->connect($this->transport . '-in', new ImReceiverQueueHandler($this), 'im');
$manager->connect($this->transport, new ImQueueHandler($this));
$manager->connect($this->transport . '-out', new ImSenderQueueHandler($this), 'im');
// If we don't require CLI mode, or if we do and GNUSOCIAL_CLI _is_ set, then connect the transports
// This check is made mostly because some IM plugins can't deliver to transports unless they
// have continously running daemons (such as XMPP) and we can't have that over HTTP requests.
if (!$this->requires_cli || defined('GNUSOCIAL_CLI')) {
$manager->connect($this->transport . '-in', new ImReceiverQueueHandler($this), 'im');
$manager->connect($this->transport, new ImQueueHandler($this));
$manager->connect($this->transport . '-out', new ImSenderQueueHandler($this), 'im');
}
return true;
}
......
......@@ -29,6 +29,8 @@ if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
define('GNUSOCIAL', true);
define('STATUSNET', true); //compatibility
define('GNUSOCIAL_CLI', true); // to know we're in a CLI environment
// Set various flags so we don't time out on long-running processes
ini_set("max_execution_time", "0");
......
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