|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Drupal\islandora;
|
|
|
|
|
|
|
|
use Drupal\Core\Config\ConfigFactoryInterface;
|
|
|
|
use Drupal\islandora\Form\IslandoraSettingsForm;
|
|
|
|
use Stomp\Client;
|
|
|
|
use Stomp\StatefulStomp;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* StatefulStomp static factory.
|
|
|
|
*/
|
|
|
|
class StompFactory {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Factory function.
|
|
|
|
*
|
|
|
|
* @param \Drupal\Core\Config\ConfigFactoryInterface $config
|
|
|
|
* Config.
|
|
|
|
*
|
|
|
|
* @return \Stomp\StatefulStomp
|
|
|
|
* Stomp client.
|
|
|
|
*/
|
|
|
|
public static function create(ConfigFactoryInterface $config) {
|
|
|
|
// Get broker url from config.
|
|
|
|
$settings = $config->get(IslandoraSettingsForm::CONFIG_NAME);
|
|
|
|
$brokerUrl = $settings->get(IslandoraSettingsForm::BROKER_URL);
|
|
|
|
$brokerUser = $settings->get(IslandoraSettingsForm::BROKER_USER);
|
|
|
|
// Try a sensible default if one hasn't been configured.
|
|
|
|
if (empty($brokerUrl)) {
|
|
|
|
$brokerUrl = "tcp://localhost:61613";
|
|
|
|
}
|
|
|
|
|
|
|
|
$client = new Client($brokerUrl);
|
|
|
|
if ($brokerUser) {
|
|
|
|
$client->setLogin($brokerUser, $settings->get(IslandoraSettingsForm::BROKER_PASSWORD));
|
|
|
|
}
|
|
|
|
return new StatefulStomp($client);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|