public abstract class ExternalReaderBaseProvider extends java.lang.Object implements Layer1ApiProvider
This is a base class that should help you writing your own providers for reading files in replay.
Provider is guaranteed to be used for replay of only one file
Typical lifecycle looks like this:
Layer1ApiAdminProvider.login(LoginData)
is called with instance of
ReadFileLoginData
as parameter. Before exiting this method provider
should check that file format is supported. If it is not then
FileNotSupportedUserMessage
should be sent via
Layer1ApiAdminListener.onUserMessage(Object)
, and Bookmap will try
other ways to decode the file. Failure to send the message will prevent
bookmap from attempting other decoding modules and will result in file
reading being done by this module instead.Layer1ApiAdminProvider.login(LoginData)
completes, Layer1ApiAdminProvider.getCurrentTime()
might be called before you invoke any callbacks. If this happens then time it
returns will be be used as a time where file starts. Usually you want it to
be the time of the first event.Layer1ApiAdminProvider.getCurrentTime()
call will
usually be made at least once before it returns. Returned value will be used
as event timestamp.Layer1ApiAdminListener.onUserMessage(Object)
passing an instance of
FileEndReachedUserMessage
. After this point no other callback
methods should be invoked!Layer1ApiAdminProvider.close()
is invoked. This is the place to clean up resources.
After this point provider instance will not be used anymore.
However it's possible that Layer1ApiAdminProvider.close()
method will be called earlier. In
this case provider should stop invoking callbacks and clean up resources
before leaving this method.
Modifier and Type | Field and Description |
---|---|
java.util.concurrent.CopyOnWriteArrayList<Layer1ApiAdminListener> |
adminListeners |
java.util.concurrent.CopyOnWriteArrayList<Layer1ApiDataListener> |
dataListeners |
java.util.concurrent.CopyOnWriteArrayList<Layer1ApiInstrumentListener> |
instrumentListeners |
java.util.concurrent.CopyOnWriteArrayList<Layer1ApiMboDataListener> |
mboDataListeners |
java.util.concurrent.CopyOnWriteArrayList<Layer1ApiTradingListener> |
tradingListeners |
Constructor and Description |
---|
ExternalReaderBaseProvider() |
Modifier and Type | Method and Description |
---|---|
void |
addListener(Layer1ApiAdminListener listener)
Add listener for general events
|
void |
addListener(Layer1ApiDataListener listener)
Add data listener
|
void |
addListener(Layer1ApiInstrumentListener listener)
Add instrument events listener
|
void |
addListener(Layer1ApiMboDataListener listener)
Add mbo data listener
|
void |
addListener(Layer1ApiTradingListener listener)
Add trading listener
|
java.lang.String |
formatPrice(java.lang.String alias,
double price)
Format price using platform capabilities if possible
|
Layer1ApiProviderSupportedFeatures |
getSupportedFeatures()
Get information about features that are supported by a provider.
|
void |
removeListener(Layer1ApiAdminListener listener)
Remove listener for general events
|
void |
removeListener(Layer1ApiDataListener listener)
Remove data listener
|
void |
removeListener(Layer1ApiInstrumentListener listener)
Remove instrument events listener
|
void |
removeListener(Layer1ApiMboDataListener listener)
Remove mbo data listener
|
void |
removeListener(Layer1ApiTradingListener listener)
Remove trading listener
|
void |
sendOrder(OrderSendParameters orderSendParameters)
Submit order with specified parameters
|
java.lang.Object |
sendUserMessage(java.lang.Object data)
Allows incorporating arbitrary functionality into protocol
|
void |
subscribe(SubscribeInfo subscribeInfo)
Subscribe to specified instrument.
|
void |
unsubscribe(java.lang.String alias)
Unsubscribe from the instrument
|
void |
updateOrder(OrderUpdateParameters orderUpdateParameters)
Update order according to parameters
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
subscribe
close, getCurrentTime, getSource, login
public java.util.concurrent.CopyOnWriteArrayList<Layer1ApiAdminListener> adminListeners
public java.util.concurrent.CopyOnWriteArrayList<Layer1ApiInstrumentListener> instrumentListeners
public java.util.concurrent.CopyOnWriteArrayList<Layer1ApiDataListener> dataListeners
public java.util.concurrent.CopyOnWriteArrayList<Layer1ApiMboDataListener> mboDataListeners
public java.util.concurrent.CopyOnWriteArrayList<Layer1ApiTradingListener> tradingListeners
public void subscribe(SubscribeInfo subscribeInfo)
Layer1ApiInstrumentProvider
subscribe
in interface Layer1ApiInstrumentProvider
subscribeInfo
- has fields similar to InstrumentCoreInfo
public void unsubscribe(java.lang.String alias)
Layer1ApiInstrumentProvider
unsubscribe
in interface Layer1ApiInstrumentProvider
alias
- instrument aliaspublic java.lang.String formatPrice(java.lang.String alias, double price)
Layer1ApiDataProvider
formatPrice
in interface Layer1ApiDataProvider
public void sendOrder(OrderSendParameters orderSendParameters)
Layer1ApiTradingProvider
sendOrder
in interface Layer1ApiTradingProvider
orderSendParameters
- parameterspublic void updateOrder(OrderUpdateParameters orderUpdateParameters)
Layer1ApiTradingProvider
updateOrder
in interface Layer1ApiTradingProvider
orderUpdateParameters
- parameterspublic Layer1ApiProviderSupportedFeatures getSupportedFeatures()
Layer1ApiAdminProvider
Get information about features that are supported by a provider. Note that some fields might be set differently depending on when request is made. E.g. adapter might not know if trading will be there until login actually happens.
If you are writing a provider - take a look at
MaximumSupportedFeatures
as a way to declare full list of
capabilities before being instantiated
getSupportedFeatures
in interface Layer1ApiAdminProvider
MaximumSupportedFeatures
public java.lang.Object sendUserMessage(java.lang.Object data)
Layer1ApiAdminProvider
sendUserMessage
in interface Layer1ApiAdminProvider
data
- Message contentpublic void addListener(Layer1ApiAdminListener listener)
Layer1ApiAdminListenable
addListener
in interface Layer1ApiAdminListenable
listener
- listener to addpublic void removeListener(Layer1ApiAdminListener listener)
Layer1ApiAdminListenable
removeListener
in interface Layer1ApiAdminListenable
listener
- listener to removepublic void addListener(Layer1ApiInstrumentListener listener)
Layer1ApiInstrumentListenable
addListener
in interface Layer1ApiInstrumentListenable
listener
- listener to addpublic void removeListener(Layer1ApiInstrumentListener listener)
Layer1ApiInstrumentListenable
removeListener
in interface Layer1ApiInstrumentListenable
listener
- listener to removepublic void addListener(Layer1ApiTradingListener listener)
Layer1ApiTradingListenable
addListener
in interface Layer1ApiTradingListenable
listener
- listener to addpublic void removeListener(Layer1ApiTradingListener listener)
Layer1ApiTradingListenable
removeListener
in interface Layer1ApiTradingListenable
listener
- listener to removepublic void addListener(Layer1ApiDataListener listener)
Layer1ApiDataListenable
addListener
in interface Layer1ApiDataListenable
listener
- listener to addpublic void removeListener(Layer1ApiDataListener listener)
Layer1ApiDataListenable
removeListener
in interface Layer1ApiDataListenable
listener
- listener to removepublic void addListener(Layer1ApiMboDataListener listener)
Layer1ApiMboDataListenable
addListener
in interface Layer1ApiMboDataListenable
listener
- listener to addpublic void removeListener(Layer1ApiMboDataListener listener)
Layer1ApiMboDataListenable
removeListener
in interface Layer1ApiMboDataListenable
listener
- listener to remove