com.dxfeed.api
Class DXFeed

java.lang.Object
  extended by com.dxfeed.api.DXFeed
Direct Known Subclasses:
DXFeedImpl

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 = DXFeed.createConnectedFeed("demo.dxfeed.com:7300",
     Executors.newSingleThreadExecutor());

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(Arrays.asList("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<Event> sub = feed.createSubscription(Quote.class, Trade.class);
 sub.addEventListener(new DXFeedEventListener<Event>() {
     public void eventsReceived(List<Event> events) {
         for (Event event : events)
             System.out.println(event);
     }
 });
 sub.addSymbols(Arrays.asList("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 sub = feed.createSubscription(Trade.class);
 sub.addSymbols(Arrays.asList("SPY"));
 while (true) {
     System.out.println(feed.getLastEvent(new Trade("SPY")));
     Thread.sleep(1000);
 }


Constructor Summary
protected DXFeed()
          Protected constructor for implementations of this class only.
 
Method Summary
abstract  void attachSubscription(DXFeedSubscription<?> subscription)
          Attaches the given subscription to this feed.
static DXFeed createConnectedFeed(java.lang.String address, java.util.concurrent.Executor executor)
          Creates DXFeed that is connected to the market data uplink via a specified address.
<T extends Event>
DXFeedSubscription<T>
createSubscription(java.lang.Class<? extends T>... eventTypes)
          Creates new subscription that is attached to this feed.
abstract  void detachSubscription(DXFeedSubscription<?> subscription)
          Detaches the given subscription from this feed.
abstract
<T extends Event>
T
getLastEvent(T event)
          Returns the last event for the specified symbol and event type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DXFeed

protected DXFeed()
Protected constructor for implementations of this class only.

Method Detail

createConnectedFeed

public static DXFeed createConnectedFeed(java.lang.String address,
                                         java.util.concurrent.Executor executor)
Creates DXFeed that is connected to the market data uplink via a specified address. Connection address includes all required credentials and is provided as a part of market data agreement. Use "demo.dxfeed.com:7300" for demo access.

Event notifications that arrive over this feed will be processed by a specified executor. See Executors for some ready-to-use implementations.

Parameters:
address - data source address.
executor - executor to process arriving events.
Returns:
New DXFeed that is connected to the data uplink at the specified address.
Throws:
java.lang.NullPointerException - if address or executor are null.
java.lang.IllegalArgumentException - if address has invalid format.

createSubscription

public final <T extends Event> DXFeedSubscription<T> createSubscription(java.lang.Class<? extends T>... eventTypes)
Creates new subscription that is attached to this feed. This method creates new DXFeedSubscription and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription).

See Also:
DXFeedSubscription.DXFeedSubscription(Class[])

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 method adds a non-serializable class as a DXFeedSubscriptionChangeListener for the given subscription via DXFeedSubscription.addSubscriptionChangeListener(com.dxfeed.api.DXFeedSubscriptionChangeListener) method. Attachment is lost when subscription is serialized.

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.

This method removes a class as a DXFeedSubscriptionChangeListener for the given subscription via DXFeedSubscription.removeSubscriptionChangeListener(com.dxfeed.api.DXFeedSubscriptionChangeListener) method.

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

getLastEvent

public abstract <T extends Event> T getLastEvent(T event)
Returns the last event for the specified symbol and event type. 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 avilable for any reason (no subscription, no connection to uplink, not applicable to this event type, etc), then the event object is not changed. This method always returns the same event 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.