Skip enqueueing to outgoing bridges on incoming remote messages. Twitter, Facebook, RSSCloud, and OStatus checks were enqueued on these when they'd never do anything but churn the queue servers.

Notice::isLocal() can replace a number of manual checks for $notice->is_local being LOCAL_PUBLIC or LOCAL_NONPUBLIC.
This commit is contained in:
Brion Vibber 2010-06-03 16:58:45 -07:00
parent 791b98046d
commit 5f4c6ec626
6 changed files with 23 additions and 22 deletions

View File

@ -1861,4 +1861,16 @@ class Notice extends Memcached_DataObject
return $ns;
}
/**
* Determine whether the notice was locally created
*
* @return boolean locality
*/
public function isLocal()
{
return ($this->is_local == Notice::LOCAL_PUBLIC ||
$this->is_local == Notice::LOCAL_NONPUBLIC);
}
}

View File

@ -1235,9 +1235,8 @@ function common_enqueue_notice($notice)
$transports[] = 'jabber';
}
// @fixme move these checks into QueueManager and/or individual handlers
if ($notice->is_local == Notice::LOCAL_PUBLIC ||
$notice->is_local == Notice::LOCAL_NONPUBLIC) {
// We can skip these for gatewayed notices.
if ($notice->isLocal()) {
$transports = array_merge($transports, $localTransports);
if ($xmpp) {
$transports[] = 'public';

View File

@ -585,7 +585,7 @@ class FacebookPlugin extends Plugin
function onStartEnqueueNotice($notice, &$transports)
{
if (self::hasKeys()) {
if (self::hasKeys() && $notice->isLocal()) {
array_push($transports, 'facebook');
}
return true;

View File

@ -102,8 +102,10 @@ class OStatusPlugin extends Plugin
*/
function onStartEnqueueNotice($notice, &$transports)
{
// put our transport first, in case there's any conflict (like OMB)
array_unshift($transports, 'ostatus');
if ($notice->isLocal()) {
// put our transport first, in case there's any conflict (like OMB)
array_unshift($transports, 'ostatus');
}
return true;
}

View File

@ -192,24 +192,12 @@ class RSSCloudPlugin extends Plugin
function onStartEnqueueNotice($notice, &$transports)
{
array_push($transports, 'rsscloud');
if ($notice->isLocal()) {
array_push($transports, 'rsscloud');
}
return true;
}
/**
* Determine whether the notice was locally created
*
* @param Notice $notice the notice in question
*
* @return boolean locality
*/
function _isLocal($notice)
{
return ($notice->is_local == Notice::LOCAL_PUBLIC ||
$notice->is_local == Notice::LOCAL_NONPUBLIC);
}
/**
* Create the rsscloud_subscription table if it's not
* already in the DB

View File

@ -221,7 +221,7 @@ class TwitterBridgePlugin extends Plugin
*/
function onStartEnqueueNotice($notice, &$transports)
{
if (self::hasKeys()) {
if (self::hasKeys() && $notice->isLocal()) {
// Avoid a possible loop
if ($notice->source != 'twitter') {
array_push($transports, 'twitter');