<?php
+use MediaWiki\MediaWikiServices;
+
/**
* Factory class for spawning EventRelayer objects using configuration
*
/** @var EventRelayer[] */
protected $relayers = [];
- /** @var EventRelayerGroup */
- protected static $instance = null;
-
/**
- * @param Config $config
+ * @param array[] $config Channel configuration
*/
- protected function __construct( Config $config ) {
- $this->configByChannel = $config->get( 'EventRelayerConfig' );
+ public function __construct( array $config ) {
+ $this->configByChannel = $config;
}
/**
+ * @deprecated since 1.27 Use MediaWikiServices::getInstance()->getEventRelayerGroup()
* @return EventRelayerGroup
*/
public static function singleton() {
- if ( !self::$instance ) {
- self::$instance = new self( RequestContext::getMain()->getConfig() );
- }
-
- return self::$instance;
+ return MediaWikiServices::getInstance()->getEventRelayerGroup();
}
/**
return $this->getService( 'StatsdDataFactory' );
}
+ /**
+ * @return EventRelayerGroup
+ */
+ public function getEventRelayerGroup() {
+ return $this->getService( 'EventRelayerGroup' );
+ }
+
///////////////////////////////////////////////////////////////////////////
// NOTE: When adding a service getter here, don't forget to add a test
// case for it in MediaWikiServicesTest::provideGetters() and in
);
},
+ 'EventRelayerGroup' => function( MediaWikiServices $services ) {
+ return new EventRelayerGroup( $services->getMainConfig()->get( 'EventRelayerConfig' ) );
+ },
+
///////////////////////////////////////////////////////////////////////////
// NOTE: When adding a service here, don't forget to add a getter function
// in the MediaWikiServices class. The convenience getter should just call
*/
use Wikimedia\Assert\Assert;
+use MediaWiki\MediaWikiServices;
/**
* Handles purging appropriate CDN URLs given a title (or titles)
wfDebugLog( 'squid', __METHOD__ . ': ' . implode( ' ', $urlArr ) );
// Reliably broadcast the purge to all edge nodes
- $relayer = EventRelayerGroup::singleton()->getRelayer( 'cdn-url-purges' );
+ $relayer = MediaWikiServices::getInstance()->getEventRelayerGroup()
+ ->getRelayer( 'cdn-url-purges' );
$relayer->notify(
'cdn-url-purges',
[
*/
use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
/**
* Functions to get cache objects
$params = $wgWANObjectCaches[$id];
foreach ( $params['channels'] as $action => $channel ) {
- $params['relayers'][$action] = EventRelayerGroup::singleton()->getRelayer( $channel );
+ $params['relayers'][$action] = MediaWikiServices::getInstance()->getEventRelayerGroup()
+ ->getRelayer( $channel );
$params['channels'][$action] = $channel;
}
$params['cache'] = self::newFromId( $params['cacheId'] );
'SiteStore' => [ 'getSiteStore', SiteStore::class ],
'SiteLookup' => [ 'getSiteLookup', SiteLookup::class ],
'StatsdDataFactory' => [ 'getStatsdDataFactory', StatsdDataFactory::class ],
+ 'EventRelayerGroup' => [ 'getEventRelayerGroup', EventRelayerGroup::class ],
];
}
'SiteStore' => [ 'SiteStore', SiteStore::class ],
'SiteLookup' => [ 'SiteLookup', SiteLookup::class ],
'StatsdDataFactory' => [ 'StatsdDataFactory', StatsdDataFactory::class ],
+ 'EventRelayerGroup' => [ 'EventRelayerGroup', EventRelayerGroup::class ],
];
}