package org.marketcetera.marketdata.core;
import java.util.Set;
import org.marketcetera.marketdata.Capability;
import org.marketcetera.marketdata.IFeedComponent.FeedType;
import org.marketcetera.marketdata.core.cache.MarketDataCache;
import org.marketcetera.marketdata.core.request.MarketDataRequestToken;
import org.marketcetera.util.misc.ClassVersion;
import org.springframework.context.Lifecycle;
/* $License$ */
/**
* Provides market data from a specific source.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: MarketDataProvider.java 16901 2014-05-11 16:14:11Z colin $
* @since 2.4.0
*/
@ClassVersion("$Id: MarketDataProvider.java 16901 2014-05-11 16:14:11Z colin $")
public interface MarketDataProvider
extends MarketDataProviderMBean,MarketDataCache
{
/**
* Requests market data as indicated in the given request token.
*
* <p>The given token contains sufficient information to indicate what market data was
* requested and to whom it should be delivered.
*
* @param inRequestToken a <code>MarketDataRequestToken</code> value
*/
public void requestMarketData(MarketDataRequestToken inRequestToken);
/**
* Cancels a market data request.
*
* @param inRequestToken a <code>MarketDataRequestToken</code> value
*/
public void cancelMarketDataRequest(MarketDataRequestToken inRequestToken);
/**
* Gets the name of the provider.
*
* <p>This name will identify the source of the market data to the user. The name
* must be unique among all active market data providers.
*
* @return a <code>String</code> value
*/
public String getProviderName();
/**
* Gets the capabilities of this market data provider.
*
* <p>The returned value can be static or dynamic. This method may be invoked
* more than once. This method should not be invoked until the provider is {@link Lifecycle#start() started}.
*
* @return a <code>Set<Capability></code>
*/
public Set<Capability> getCapabilities();
/**
* Gets the feed type of the provider.
*
* @return a <code>FeedType</code> value
*/
public FeedType getFeedType();
}