public abstract class DXFeed extends Object
getInstance()
method.
It is created on the first use with default configuration properties that are explained in detail in
documentation for DXEndpoint
class in the
"Default properties"
section. In particular,
you can provide a default address to connect using
"dxfeed.address
"
system property or by putting it into
"dxfeed.properties
"
file on JVM classpath. dxFeed API samples come with a ready-to-use "dxfeed.properties"
file that contains an address of dxFeed demo feed at "demo.dxfeed.com:7300".
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. SeeDXFeedSubscription
<Quote
> sub =DXFeed
.getInstance
().createSubscription
(Quote.class
); sub.addEventListener
(newDXFeedEventListener
<Quote
>() { public void eventsReceived(List
<Quote
> quotes) { for (Quote
quote : quotes) System.out.println("Mid = " + (quote.getBidPrice
() + quote.getAskPrice
()) / 2); } }); sub.addSymbols
("SPY");
DXFeedSubscription.addSymbols
for details.
DXFeedSubscription
<MarketEvent
> sub =DXFeed
.getInstance
().<MarketEvent
>createSubscription
(Quote.class
,Trade.class
); sub.addEventListener
(newDXFeedEventListener
<MarketEvent
>() { public void eventsReceived(List
<MarketEvent
> events) { for (MarketEvent
event : events) System.out.println(event); } }); sub.addSymbols
("SPY");
DXFeedSubscription
<Trade
> sub =DXFeed
.getInstance
().createSubscription
(Trade.class
); sub.addSymbols
("SPY"); while (true) { System.out.println(feed.getLastEvent
(new Trade("SPY"))); Thread.sleep(1000); }
Modifier | Constructor and Description |
---|---|
protected |
DXFeed()
Protected constructor for implementations of this class only.
|
Modifier and Type | Method and Description |
---|---|
abstract void |
attachSubscription(DXFeedSubscription<?> subscription)
Attaches the given subscription to this feed.
|
<E> DXFeedSubscription<E> |
createSubscription(Class<? extends E>... eventTypes)
Creates new subscription for multiple event types that is attached to this feed.
|
<E> DXFeedSubscription<E> |
createSubscription(Class<? extends E> eventType)
Creates new subscription for a single event type that is attached to this feed.
|
<E extends TimeSeriesEvent<?>> |
createTimeSeriesSubscription(Class<? extends E>... eventTypes)
Creates new time series subscription for multiple event types that is attached to this feed.
|
<E extends TimeSeriesEvent<?>> |
createTimeSeriesSubscription(Class<? extends E> 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.
|
static DXFeed |
getInstance()
Returns a default application-wide singleton instance of DXFeed.
|
abstract <E extends LastingEvent<?>> |
getLastEvent(E event)
Returns the last event for the specified event instance.
|
abstract <E extends LastingEvent<?>> |
getLastEventPromise(Class<E> eventType,
Object symbol)
Requests the last event for the specified event type and symbol.
|
<E extends LastingEvent<?>> |
getLastEvents(Collection<E> events)
Returns the last events for the specified list of event instances.
|
abstract <E extends TimeSeriesEvent<?>> |
getTimeSeriesPromise(Class<E> eventType,
Object symbol,
long fromTime,
long toTime)
Requests time series of events for the specified event type, symbol, and a range of time.
|
protected static <E> void |
processEvents(DXFeedSubscription<E> subscription,
List<E> events)
Processes received events.
|
protected DXFeed()
public static DXFeed getInstance()
DXEndpoint
.getInstance
(DXEndpoint.Role.FEED
).getFeed
().public final <E> DXFeedSubscription<E> createSubscription(Class<? extends E> eventType)
createSubscription(Class[])
createSubscription(Class... eventTypes)}
This method creates new DXFeedSubscription
and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription<?>)
.E
- the type of events.eventType
- the class of event types.DXFeedSubscription.DXFeedSubscription(Class)
,
attachSubscription(DXFeedSubscription)
public final <E> DXFeedSubscription<E> createSubscription(Class<? extends E>... eventTypes)
createSubscrtiption(Class eventType)
This method creates new DXFeedSubscription
and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription<?>)
.E
- the type of events.eventTypes
- the classes of event types.DXFeedSubscription.DXFeedSubscription(Class[])
,
attachSubscription(DXFeedSubscription)
public final <E extends TimeSeriesEvent<?>> DXFeedTimeSeriesSubscription<E> createTimeSeriesSubscription(Class<? extends E> eventType)
createTimeSeriesSubscription(Class[])
createTimeSeriesSubscription(Class... eventTypes)}
This method creates new DXFeedTimeSeriesSubscription
and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription<?>)
.E
- the type of events.eventType
- the class of event types.DXFeedTimeSeriesSubscription.DXFeedTimeSeriesSubscription(Class)
,
attachSubscription(DXFeedSubscription)
public final <E extends TimeSeriesEvent<?>> DXFeedTimeSeriesSubscription<E> createTimeSeriesSubscription(Class<? extends E>... eventTypes)
createTimeSeriesSubscription(Class eventType)
This method creates new DXFeedTimeSeriesSubscription
and invokes attachSubscription(com.dxfeed.api.DXFeedSubscription<?>)
.E
- the type of events.eventTypes
- the classes of event types.DXFeedTimeSeriesSubscription.DXFeedTimeSeriesSubscription(Class[])
,
attachSubscription(DXFeedSubscription)
public abstract void attachSubscription(DXFeedSubscription<?> subscription)
This feed publishes data to the attached subscription.
Application can attach DXFeedEventListener
via
DXFeedSubscription.addEventListener(com.dxfeed.api.DXFeedEventListener<E>)
to get notified about data changes
and can change its data subscription via DXFeedSubscription
methods.
ObservableSubscriptionChangeListener
for the given subscription
via DXFeedSubscription.addChangeListener(com.dxfeed.api.osub.ObservableSubscriptionChangeListener)
method.
Attachment is lost when subscription is serialized and deserialized.subscription
- the subscription.NullPointerException
- if the subscription is null.DXFeedSubscription
public abstract void detachSubscription(DXFeedSubscription<?> subscription)
ObservableSubscriptionChangeListener
from the given subscription
via DXFeedSubscription.removeChangeListener(com.dxfeed.api.osub.ObservableSubscriptionChangeListener)
method.subscription
- the subscription.NullPointerException
- if the subscription is null.DXFeedSubscription
public abstract <E extends LastingEvent<?>> E getLastEvent(E event)
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
WildcardSymbol.ALL
subscription does not count for that purpose.
Use getLastEventPromise
method
if event needs to be requested in the absence of subscription.
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.
Note, that this method does not work when DXEndpoint
was created with
STREAM_FEED
role (never fills in the event).
E
- the type of event.event
- the event.NullPointerException
- if the event is null.public <E extends LastingEvent<?>> Collection<E> getLastEvents(Collection<E> events)
getLastEvent
method.
Note, that this method does not work when DXEndpoint
was created with
STREAM_FEED
role.
E
- the type of event.events
- the collection of events.NullPointerException
- if the collection or any event in it is null.public abstract <E extends LastingEvent<?>> Promise<E> getLastEventPromise(Class<E> eventType, Object symbol)
LastingEvent
marker interface.
This method requests the data from the the uplink data provider,
creates new event of the specified eventType
,
and completes
the resulting promise with this event.
The promise is cancelled
when the the underlying DXEndpoint
is
closed
.
If the event is not available for any transient reason (no subscription, no connection to uplink, etc),
then the resulting promise completes when the issue is resolved, which may involve an arbitrarily long wait.
Use Promise.await(long, TimeUnit)
method to specify timeout while waiting for promise to complete.
If the event is permanently not available (not supported), then the promise
completes exceptionally
with IllegalArgumentException
.
Note, that this method does not work when DXEndpoint
was created with
STREAM_FEED
role (promise completes exceptionally).
E
- the type of event.eventType
- the event type.symbol
- the symbol.NullPointerException
- if the eventType or symbol are null.public abstract <E extends TimeSeriesEvent<?>> Promise<List<E>> getTimeSeriesPromise(Class<E> eventType, Object symbol, long fromTime, long toTime)
TimeSeriesEvent
interface.
This method requests the data from the the uplink data provider,
creates a list of events of the specified eventType
,
and completes
the resulting promise with this list.
The events are ordered by time
in the list.
The promise is cancelled
when the the underlying DXEndpoint
is
closed
.
If the event is not available for any transient reason (no subscription, no connection to uplink, etc),
then the resulting promise completes when the issue is resolved, which may involve an arbitrarily long wait.
Use Promise.await(long, TimeUnit)
method to specify timeout while waiting for promise to complete.
If the event is permanently not available (not supported), then the promise
completes exceptionally
with IllegalArgumentException
.
Note, that this method does not work when DXEndpoint
was created with
STREAM_FEED
role (promise completes exceptionally).
E
- the type of event.eventType
- the event type.symbol
- the symbolfromTime
- the time, inclusive, to request events from (see TimeSeriesEvent.getTime
)toTime
- the time, exclusive, to request events to (see TimeSeriesEvent.getTime
)NullPointerException
- if the eventType or symbol are null.protected static <E> void processEvents(DXFeedSubscription<E> subscription, List<E> events)
DXFeedEventListener.eventsReceived(java.util.List<E>)
on all installed
event listeners. This is a protected method for use by DXFeed
implementation classes only.E
- the type of events.events
- the list of received events.Copyright © 2014 Devexperts. All Rights Reserved.