forked from GNUsocial/gnu-social
Keep handler registration per-site to fix queue registration in mixed config environment
This commit is contained in:
parent
f4b47c7e64
commit
2f32181c93
@ -66,10 +66,57 @@ class StompQueueManager extends QueueManager
|
|||||||
*
|
*
|
||||||
* @fixme possibly actually do subscription here to save another
|
* @fixme possibly actually do subscription here to save another
|
||||||
* loop over all sites later?
|
* loop over all sites later?
|
||||||
|
* @fixme possibly don't assume it's the current site
|
||||||
*/
|
*/
|
||||||
public function addSite($server)
|
public function addSite($server)
|
||||||
{
|
{
|
||||||
$this->sites[] = $server;
|
$this->sites[] = $server;
|
||||||
|
$this->initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiate the appropriate QueueHandler class for the given queue.
|
||||||
|
*
|
||||||
|
* @param string $queue
|
||||||
|
* @return mixed QueueHandler or null
|
||||||
|
*/
|
||||||
|
function getHandler($queue)
|
||||||
|
{
|
||||||
|
$handlers = $this->handlers[common_config('site', 'server')];
|
||||||
|
if (isset($handlers[$queue])) {
|
||||||
|
$class = $handlers[$queue];
|
||||||
|
if (class_exists($class)) {
|
||||||
|
return new $class();
|
||||||
|
} else {
|
||||||
|
common_log(LOG_ERR, "Nonexistent handler class '$class' for queue '$queue'");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
common_log(LOG_ERR, "Requested handler for unkown queue '$queue'");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all registered queue transport names.
|
||||||
|
*
|
||||||
|
* @return array of strings
|
||||||
|
*/
|
||||||
|
function getQueues()
|
||||||
|
{
|
||||||
|
return array_keys($this->handlers[common_config('site', 'server')]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a queue transport name and handler class for your plugin.
|
||||||
|
* Only registered transports will be reliably picked up!
|
||||||
|
*
|
||||||
|
* @param string $transport
|
||||||
|
* @param string $class
|
||||||
|
*/
|
||||||
|
public function connect($transport, $class)
|
||||||
|
{
|
||||||
|
$this->handlers[common_config('site', 'server')][$transport] = $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user