com.dxfeed.api
Class DXFeed

java.lang.Object
  extended by com.dxfeed.api.DXFeed

public abstract class DXFeed
extends java.lang.Object

Main entry class for DXFeed market data API. This class is thread-safe.

Sample usage

This section gives sample usage scenarios.

Create connection to the feed

The following code creates feed that is connected to DXFeed demo server.

 DXFeed feed = DXEndpoint.create().connect("demo.dxfeed.com:7300").getFeed();
See DXEndpoint class for more configuration and control options.

Subscribe for single event type

The following code creates listener that prints mid price for each quote and subscribes for quotes on SPDR S&P 500 ETF symbol:

 DXFeedSubscription<Quote> sub = feed.createSubscription(Quote.class);
 sub.addEventListener(new DXFeedEventListener<Quote>() {
     public void eventsReceived(List<Quote> quotes) {
         for (Quote quote : quotes)
             System.out.println("Mid = " + (quote.getBidPrice() + quote.getAskPrice()) / 2);
     }
 });
 sub.addSymbols("SPY");
Note, that order of calls is important here. By attaching listeners first and then setting subscription we ensure that the current quote gets received by the listener. See DXFeedSubscription.addSymbols for details.

Subscribe for multiple event types

The following code creates listener that prints each received event and subscribes for quotes and trades on SPDR S&P 500 ETF symbol:

 DXFeedSubscription<MarketEvent> sub = feed.<MarketEvent>createSubscription(Quote.class, Trade.class);
 sub.addEventListener(new DXFeedEventListener<MarketEvent>() {
     public void eventsReceived(List<MarketEvent> events) {
         for (MarketEvent event : events)
             System.out.println(event);
     }
 });
 sub.addSymbols("SPY");

Subscribe for event and query periodically its last value

The following code subscribes for trades on SPDR S&P 500 ETF symbol and prints last trade every second.

 DXFeedSubscription<Trade> sub = feed.createSubscription(Trade.class);
 sub.addSymbols("SPY");
 while (true) {
     System.out.println(feed.getLastEvent(new Trade("SPY")));
     Thread.sleep(1000);
 }


Method Summary
abstract  void attachSubscription(DXFeedSubscription<?> subscription)
          Attaches the given subscription to this feed.
<T> DXFeedSubscription<T>
createSubscription(java.lang.Class<? extends T>... eventTypes)
          Creates new subscription for multiple event types that is attached to this feed.
<T> DXFeedSubscription<T>
createSubscription(java.lang.Class<? extends T> eventType)
          Creates new subscription for a single event type that is attached to this feed.
<T extends TimeSeriesEvent>
DXFeedTimeSeriesSubscription<T>
createTimeSeriesSubscription(java.lang.Class<? extends T>... eventTypes)
          Creates new time series subscription for multiple event types that is attached to this feed.
<T extends TimeSeriesEvent>
DXFeedTimeSeriesSubscription<T>
createTimeSeriesSubscription(java.lang.Class<? extends T> eventType)
          Creates new time series subscription for a single event type that is attached to this feed.
abstract  void detachSubscription(DXFeedSubscription<?> subscription)
          Detaches the given subscription from this feed.
abstract
<T extends LastingEvent>
T
getLastEvent(T event)
          Returns the last event for the specified symbol and event type.
<T extends LastingEvent>
java.util.Collection<T>
getLastEvents(java.util.Collection<T> events)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

createSubscription

public final <T> DXFeedSubscription<T> createSubscription(java.lang.Class<? extends T> eventType)
Creates new subscription for a single event type that is attached to this feed. For multiple event types in one subscription use createSubscription(Class[]) createSubscription(Class... eventTypes)} This method creates new DXFeedSubscription and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription).

See Also:
DXFeedSubscription.DXFeedSubscription(Class), attachSubscription(DXFeedSubscription)

createSubscription

public final <T> DXFeedSubscription<T> createSubscription(java.lang.Class<? extends T>... eventTypes)
Creates new subscription for multiple event types that is attached to this feed. For a single event type use createSubscrtiption(Class eventType) This method creates new DXFeedSubscription and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription).

See Also:
DXFeedSubscription.DXFeedSubscription(Class[]), attachSubscription(DXFeedSubscription)

createTimeSeriesSubscription

public final <T extends TimeSeriesEvent> DXFeedTimeSeriesSubscription<T> createTimeSeriesSubscription(java.lang.Class<? extends T> eventType)
Creates new time series subscription for a single event type that is attached to this feed. For multiple event types in one subscription use createTimeSeriesSubscription(Class[]) createTimeSeriesSubscription(Class... eventTypes)} This method creates new DXFeedTimeSeriesSubscription and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription).

See Also:
DXFeedTimeSeriesSubscription.DXFeedTimeSeriesSubscription(Class), attachSubscription(DXFeedSubscription)

createTimeSeriesSubscription

public final <T extends TimeSeriesEvent> DXFeedTimeSeriesSubscription<T> createTimeSeriesSubscription(java.lang.Class<? extends T>... eventTypes)
Creates new time series subscription for multiple event types that is attached to this feed. For a single event type use createTimeSeriesSubscription(Class eventType) This method creates new DXFeedTimeSeriesSubscription and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription).

See Also:
DXFeedTimeSeriesSubscription.DXFeedTimeSeriesSubscription(Class[]), attachSubscription(DXFeedSubscription)

attachSubscription

public abstract void attachSubscription(DXFeedSubscription<?> subscription)
Attaches the given subscription to this feed. This method does nothing if the corresponding subscription is already attached to this feed.

This feed publishes data to the attached subscription. Application can attach DXFeedEventListener via DXFeedSubscription.addEventListener(com.dxfeed.api.DXFeedEventListener) to get notified about data changes and can change its data subscription via DXFeedSubscription methods.

Implementation notes

This method adds a non-serializable ObservableSubscriptionChangeListener for the given subscription via DXFeedSubscription.addChangeListener(com.dxfeed.api.osub.ObservableSubscriptionChangeListener) method. Attachment is lost when subscription is serialized and deserialized.

Parameters:
subscription - the subscription.
Throws:
java.lang.NullPointerException - if the subscription is null.
See Also:
DXFeedSubscription

detachSubscription

public abstract void detachSubscription(DXFeedSubscription<?> subscription)
Detaches the given subscription from this feed. This method does nothing if the corresponding subscription is not attached to this feed.

Implementation notes

This method removes ObservableSubscriptionChangeListener from the given subscription via DXFeedSubscription.removeChangeListener(com.dxfeed.api.osub.ObservableSubscriptionChangeListener) method.

Parameters:
subscription - the subscription.
Throws:
java.lang.NullPointerException - if the subscription is null.
See Also:
DXFeedSubscription

getLastEvent

public abstract <T extends LastingEvent> T getLastEvent(T event)
Returns the last event for the specified symbol and event type. This method works only for event types that implement LastingEvent marker interface. This method goes not make any remote calls to the uplink data provider. It just retrieves last received event from the local cache of this feed. The events are stored in the cache only if there is some attached DXFeedSubscription that is subscribed to the corresponding symbol and event type.

This method fills in the values for the last event into the event argument. If the last event is not available for any reason (no subscription, no connection to uplink, etc). then the event object is not changed. This method always returns the same event instance that is passed to it as an argument.

Type Parameters:
T - the event type.
Parameters:
event - the event.
Returns:
the event.
Throws:
java.lang.NullPointerException - if the event is null.

getLastEvents

public <T extends LastingEvent> java.util.Collection<T> getLastEvents(java.util.Collection<T> events)