Class ExternalReaderBaseProvider
- All Implemented Interfaces:
java.lang.AutoCloseable
,Layer1ApiAdminListenable
,Layer1ApiAdminProvider
,Layer1ApiDataListenable
,Layer1ApiDataProvider
,Layer1ApiInstrumentListenable
,Layer1ApiInstrumentProvider
,Layer1ApiMboDataListenable
,Layer1ApiProvider
,Layer1ApiTradingListenable
,Layer1ApiTradingProvider
,LayerApiListenable
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.
Lifecycle
Provider is guaranteed to be used for replay of only one file
Typical lifecycle looks like this:
- Provider is created (constructor with no parameters is invoked).
- addListener methods are called. Provider should remember the listeners and use those for sending data later.
Layer1ApiAdminProvider.login(LoginData)
is called with instance ofReadFileLoginData
as parameter. Before exiting this method provider should check that file format is supported. If it is not thenFileNotSupportedUserMessage
should be sent viaLayer1ApiAdminListener.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.- As soon as
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. - Provider sends data via callbacks. Calls will be blocked until data is
processed. When callback is invoked
Layer1ApiAdminProvider.getCurrentTime()
call will usually be made at least once before it returns. Returned value will be used as event timestamp. - When all data is sent, provider calls
Layer1ApiAdminListener.onUserMessage(Object)
passing an instance ofFileEndReachedUserMessage
. 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.
-
Field Summary
Fields Modifier and Type Field 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 Summary
Constructors Constructor Description ExternalReaderBaseProvider()
-
Method Summary
Modifier and Type Method Description void
addListener(Layer1ApiAdminListener listener)
Add listener for general eventsvoid
addListener(Layer1ApiDataListener listener)
Add data listenervoid
addListener(Layer1ApiInstrumentListener listener)
Add instrument events listenervoid
addListener(Layer1ApiMboDataListener listener)
Add mbo data listenervoid
addListener(Layer1ApiTradingListener listener)
Add trading listenerjava.lang.String
formatPrice(java.lang.String alias, double price)
Format price using platform capabilities if possibleLayer1ApiProviderSupportedFeatures
getSupportedFeatures()
Get information about features that are supported by a provider.void
removeListener(Layer1ApiAdminListener listener)
Remove listener for general eventsvoid
removeListener(Layer1ApiDataListener listener)
Remove data listenervoid
removeListener(Layer1ApiInstrumentListener listener)
Remove instrument events listenervoid
removeListener(Layer1ApiMboDataListener listener)
Remove mbo data listenervoid
removeListener(Layer1ApiTradingListener listener)
Remove trading listenervoid
sendOrder(OrderSendParameters orderSendParameters)
Submit order with specified parametersjava.lang.Object
sendUserMessage(java.lang.Object data)
Allows incorporating arbitrary functionality into protocolvoid
subscribe(SubscribeInfo subscribeInfo)
Subscribe to specified instrument.void
unsubscribe(java.lang.String alias)
Unsubscribe from the instrumentvoid
updateOrder(OrderUpdateParameters orderUpdateParameters)
Update order according to parametersMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface velox.api.layer1.Layer1ApiAdminProvider
close, getCurrentTime, getSource, login
-
Field Details
-
Constructor Details
-
ExternalReaderBaseProvider
public ExternalReaderBaseProvider()
-
-
Method Details
-
subscribe
Description copied from interface:Layer1ApiInstrumentProvider
Subscribe to specified instrument. Some parameters can be null depending on the platform.- Specified by:
subscribe
in interfaceLayer1ApiInstrumentProvider
- Parameters:
subscribeInfo
- has fields similar toInstrumentCoreInfo
-
unsubscribe
public void unsubscribe(java.lang.String alias)Description copied from interface:Layer1ApiInstrumentProvider
Unsubscribe from the instrument- Specified by:
unsubscribe
in interfaceLayer1ApiInstrumentProvider
- Parameters:
alias
- instrument alias
-
formatPrice
public java.lang.String formatPrice(java.lang.String alias, double price)Description copied from interface:Layer1ApiDataProvider
Format price using platform capabilities if possible- Specified by:
formatPrice
in interfaceLayer1ApiDataProvider
- Returns:
-
sendOrder
Description copied from interface:Layer1ApiTradingProvider
Submit order with specified parameters- Specified by:
sendOrder
in interfaceLayer1ApiTradingProvider
- Parameters:
orderSendParameters
- parameters
-
updateOrder
Description copied from interface:Layer1ApiTradingProvider
Update order according to parameters- Specified by:
updateOrder
in interfaceLayer1ApiTradingProvider
- Parameters:
orderUpdateParameters
- parameters
-
getSupportedFeatures
Description copied from interface: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- Specified by:
getSupportedFeatures
in interfaceLayer1ApiAdminProvider
- Returns:
- object describing supported features
- See Also:
MaximumSupportedFeatures
-
sendUserMessage
public java.lang.Object sendUserMessage(java.lang.Object data)Description copied from interface:Layer1ApiAdminProvider
Allows incorporating arbitrary functionality into protocol- Specified by:
sendUserMessage
in interfaceLayer1ApiAdminProvider
- Parameters:
data
- Message content- Returns:
-
addListener
Description copied from interface:Layer1ApiAdminListenable
Add listener for general events- Specified by:
addListener
in interfaceLayer1ApiAdminListenable
- Parameters:
listener
- listener to add
-
removeListener
Description copied from interface:Layer1ApiAdminListenable
Remove listener for general events- Specified by:
removeListener
in interfaceLayer1ApiAdminListenable
- Parameters:
listener
- listener to remove
-
addListener
Description copied from interface:Layer1ApiInstrumentListenable
Add instrument events listener- Specified by:
addListener
in interfaceLayer1ApiInstrumentListenable
- Parameters:
listener
- listener to add
-
removeListener
Description copied from interface:Layer1ApiInstrumentListenable
Remove instrument events listener- Specified by:
removeListener
in interfaceLayer1ApiInstrumentListenable
- Parameters:
listener
- listener to remove
-
addListener
Description copied from interface:Layer1ApiTradingListenable
Add trading listener- Specified by:
addListener
in interfaceLayer1ApiTradingListenable
- Parameters:
listener
- listener to add
-
removeListener
Description copied from interface:Layer1ApiTradingListenable
Remove trading listener- Specified by:
removeListener
in interfaceLayer1ApiTradingListenable
- Parameters:
listener
- listener to remove
-
addListener
Description copied from interface:Layer1ApiDataListenable
Add data listener- Specified by:
addListener
in interfaceLayer1ApiDataListenable
- Parameters:
listener
- listener to add
-
removeListener
Description copied from interface:Layer1ApiDataListenable
Remove data listener- Specified by:
removeListener
in interfaceLayer1ApiDataListenable
- Parameters:
listener
- listener to remove
-
addListener
Description copied from interface:Layer1ApiMboDataListenable
Add mbo data listener- Specified by:
addListener
in interfaceLayer1ApiMboDataListenable
- Parameters:
listener
- listener to add
-
removeListener
Description copied from interface:Layer1ApiMboDataListenable
Remove mbo data listener- Specified by:
removeListener
in interfaceLayer1ApiMboDataListenable
- Parameters:
listener
- listener to remove
-