/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.marketdata.live;
import java.util.Collection;
import java.util.Set;
import com.opengamma.id.ExternalScheme;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.jms.JmsConnector;
/**
* Listens to JMS messages announcing that market data providers have become available and
* notifies {@link LiveDataFactory} instances so they can retry failed subscriptions.
*/
public class LiveDataAvailabilityNotificationListener extends AvailabilityNotificationListener {
/** Factories to notify when a market data provider becomes available. */
private final Collection<LiveDataFactory> _factories;
/**
* @param topic The topic for {@link MarketDataAvailabilityNotification} messages
* @param factories Factories that will be notified when a market data provider becomes available
* @param jmsConnector For receiving JMS messages
*/
public LiveDataAvailabilityNotificationListener(String topic,
Collection<LiveDataFactory> factories,
JmsConnector jmsConnector) {
super(topic, jmsConnector);
ArgumentChecker.notEmpty(factories, "factories");
_factories = factories;
}
@Override
protected void notificationReceived(Set<ExternalScheme> schemes) {
for (LiveDataFactory factory : _factories) {
factory.resubscribe(schemes);
}
}
}