Package velox.api.layer1.layers
Class Layer1ApiInjectorRelay
java.lang.Object
velox.api.layer1.Layer1ApiBasicListenable
velox.api.layer1.layers.Layer1ApiUpstreamRelay
velox.api.layer1.layers.Layer1ApiRelay
velox.api.layer1.layers.Layer1ApiInjectorRelay
- All Implemented Interfaces:
java.lang.AutoCloseable
,Layer1ApiAdminListenable
,Layer1ApiAdminListener
,Layer1ApiAdminProvider
,Layer1ApiDataListenable
,Layer1ApiDataListener
,Layer1ApiDataProvider
,Layer1ApiInstrumentListenable
,Layer1ApiInstrumentListener
,Layer1ApiInstrumentProvider
,Layer1ApiListener
,Layer1ApiMboDataListenable
,Layer1ApiMboDataListener
,Layer1ApiProvider
,Layer1ApiTradingListenable
,Layer1ApiTradingListener
,Layer1ApiTradingProvider
,LayerApiListenable
,Layer1ApiTimeSource
- Direct Known Subclasses:
Layer1ApiStrategiesEchoMessagesLayer
public class Layer1ApiInjectorRelay extends Layer1ApiRelay
This relay is also capable of injecting messages into provider -> gui stream
in asynchronous manner. Use it when you need to do on* call in response to
some event.
-
Nested Class Summary
Nested classes/interfaces inherited from interface velox.api.layer1.layers.Layer1ApiTimeSource
Layer1ApiTimeSource.Layer1TimeSourceShortcutAllowed
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.Object
upstreamInjectorLock
Fields inherited from class velox.api.layer1.Layer1ApiBasicListenable
adminListeners, dataListeners, instrumentListeners, mboDataListeners, theOnlyAdminListener, theOnlyDataListener, theOnlyInstrumentListener, theOnlyMboDataListener, theOnlyTradingListener, tradingListeners
-
Constructor Summary
Constructors Constructor Description Layer1ApiInjectorRelay(Layer1ApiProvider provider)
-
Method Summary
Modifier and Type Method Description void
close()
Stop relaying data.protected void
inject(java.lang.Runnable r)
Inject runnable into messages stream provider -> gui.protected void
injectSynchronously(java.lang.Runnable r)
Inject runnable into messages stream provider -> gui from the same thread.void
onBalance(BalanceInfo balanceInfo)
Called when account balance information changesvoid
onConnectionLost(DisconnectionReason reason, java.lang.String message)
Connection to server lostvoid
onConnectionRestored()
Connection to server restoredvoid
onDepth(java.lang.String alias, boolean isBid, int price, int size)
Depth data update.void
onInstrumentAdded(java.lang.String alias, InstrumentInfo instrumentInfo)
Indicates successful subscription to the instrumentvoid
onInstrumentAlreadySubscribed(java.lang.String symbol, java.lang.String exchange, java.lang.String type)
Indicates that attempt to subscribe failed because subscription is already activevoid
onInstrumentNotFound(java.lang.String symbol, java.lang.String exchange, java.lang.String type)
Indicates that attempt to subscribe failed because instrument does not existvoid
onInstrumentRemoved(java.lang.String alias)
Unsubscribed from instrument (user-initiated or provider initiated).
Please note that if you use this in strategy that implementsOnlineCalculatable
, you should not delete any data about instrument that is expected inOnlineCalculatable.calculateValuesInRange(String, String, long, long, int, velox.api.layer1.layers.strategies.interfaces.CalculatedResultListener)
orOnlineCalculatable.createOnlineValueCalculator(String, String, long, java.util.function.Consumer, velox.api.layer1.layers.strategies.interfaces.InvalidateInterface)
, or should handle absence of that data (in case you delete it) gracefully.void
onLoginFailed(LoginFailedReason reason, java.lang.String message)
Failed to login with specified credentialsvoid
onLoginSuccessful()
Successful login.void
onMarketMode(java.lang.String alias, MarketMode marketMode)
Market mode update.void
onMboCancel(java.lang.String alias, java.lang.String orderId)
void
onMboReplace(java.lang.String alias, java.lang.String orderId, int price, int size)
void
onMboSend(java.lang.String alias, java.lang.String orderId, boolean isBid, int price, int size)
void
onOrderExecuted(ExecutionInfo executionInfo)
Called when one of our orders gets executedvoid
onOrderUpdated(OrderInfoUpdate orderInfoUpdate)
Called when order is updated (order creation is also considered an update).void
onStatus(StatusInfo statusInfo)
Called when instrument status information changes (PnL, number of open orders, position, etc).void
onSystemTextMessage(java.lang.String message, SystemTextMessageType messageType)
Some message from the system.void
onTrade(java.lang.String alias, double price, int size, TradeInfo tradeInfo)
Tradevoid
onUserMessage(java.lang.Object data)
Allows incorporating arbitrary functionality into protocolprotected void
safeInject(java.lang.Runnable r)
Deprecated.Methods inherited from class velox.api.layer1.layers.Layer1ApiRelay
formatPrice, getCurrentTime, getSource, getSupportedFeatures, getTimeSource, login, sendOrder, sendUserMessage, setProvider, subscribe, unsubscribe, updateOrder
Methods inherited from class velox.api.layer1.Layer1ApiBasicListenable
addListener, addListener, addListener, addListener, addListener, getAdminListenerBroadcaster, getDataListenerBroadcaster, getInstrumentListenerBroadcaster, getTradingListenerBroadcaster, getUniqueListenersCount, onNoSubscribers, removeListener, removeListener, removeListener, removeListener, removeListener
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface velox.api.layer1.Layer1ApiAdminListenable
addListener, removeListener
Methods inherited from interface velox.api.layer1.Layer1ApiDataListenable
addListener, removeListener
Methods inherited from interface velox.api.layer1.Layer1ApiInstrumentListenable
addListener, removeListener
Methods inherited from interface velox.api.layer1.Layer1ApiMboDataListenable
addListener, removeListener
Methods inherited from interface velox.api.layer1.Layer1ApiTradingListenable
addListener, removeListener
-
Field Details
-
upstreamInjectorLock
protected final java.lang.Object upstreamInjectorLock
-
-
Constructor Details
-
Method Details
-
inject
protected void inject(java.lang.Runnable r)Inject runnable into messages stream provider -> gui. Event is handled asynchronously. If you need to inject event synchronously and/or from the same thread - take a look atinjectSynchronously(Runnable)
-
injectSynchronously
protected void injectSynchronously(java.lang.Runnable r)Inject runnable into messages stream provider -> gui from the same thread. Blocks until event is injected. Be careful when using this method, it's easy to cause a deadlock. If in doubt - useinject(Runnable)
instead. -
safeInject
@Deprecated protected void safeInject(java.lang.Runnable r)Deprecated.Inject runnable into messages stream provider -> gui. If exception happens this method will log it, but won't crash the application (this was a behavior that appeared by accident). Useinject(Runnable)
instead. -
close
public void close()Description copied from class:Layer1ApiUpstreamRelay
Stop relaying data. Will not let send new events upwards, but is not guaranteed to stop ones already in progress.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfaceLayer1ApiAdminProvider
- Overrides:
close
in classLayer1ApiRelay
-
onInstrumentAdded
Description copied from interface:Layer1ApiInstrumentListener
Indicates successful subscription to the instrument- Specified by:
onInstrumentAdded
in interfaceLayer1ApiInstrumentListener
- Overrides:
onInstrumentAdded
in classLayer1ApiUpstreamRelay
- Parameters:
alias
- instrument aliasinstrumentInfo
- instrument specifications
-
onInstrumentRemoved
public void onInstrumentRemoved(java.lang.String alias)Description copied from interface:Layer1ApiInstrumentListener
Unsubscribed from instrument (user-initiated or provider initiated).
Please note that if you use this in strategy that implementsOnlineCalculatable
, you should not delete any data about instrument that is expected inOnlineCalculatable.calculateValuesInRange(String, String, long, long, int, velox.api.layer1.layers.strategies.interfaces.CalculatedResultListener)
orOnlineCalculatable.createOnlineValueCalculator(String, String, long, java.util.function.Consumer, velox.api.layer1.layers.strategies.interfaces.InvalidateInterface)
, or should handle absence of that data (in case you delete it) gracefully. The reason is that you can getLayer1ApiInstrumentListener.onInstrumentRemoved(String)
in the middle ofOnlineCalculatable
request- Specified by:
onInstrumentRemoved
in interfaceLayer1ApiInstrumentListener
- Overrides:
onInstrumentRemoved
in classLayer1ApiUpstreamRelay
-
onInstrumentNotFound
public void onInstrumentNotFound(java.lang.String symbol, java.lang.String exchange, java.lang.String type)Description copied from interface:Layer1ApiInstrumentListener
Indicates that attempt to subscribe failed because instrument does not exist- Specified by:
onInstrumentNotFound
in interfaceLayer1ApiInstrumentListener
- Overrides:
onInstrumentNotFound
in classLayer1ApiUpstreamRelay
type
- seeInstrumentCoreInfo.type
-
onInstrumentAlreadySubscribed
public void onInstrumentAlreadySubscribed(java.lang.String symbol, java.lang.String exchange, java.lang.String type)Description copied from interface:Layer1ApiInstrumentListener
Indicates that attempt to subscribe failed because subscription is already active- Specified by:
onInstrumentAlreadySubscribed
in interfaceLayer1ApiInstrumentListener
- Overrides:
onInstrumentAlreadySubscribed
in classLayer1ApiUpstreamRelay
type
- seeInstrumentCoreInfo.type
-
onTrade
Description copied from interface:Layer1ApiDataListener
Trade- Specified by:
onTrade
in interfaceLayer1ApiDataListener
- Overrides:
onTrade
in classLayer1ApiUpstreamRelay
- Parameters:
alias
- instrument aliasprice
- price in the same units as in depth update (e.g. if pips=25 then price=1000 means 25000)size
- trade sizetradeInfo
- additional information about the trade
-
onDepth
public void onDepth(java.lang.String alias, boolean isBid, int price, int size)Description copied from interface:Layer1ApiDataListener
Depth data update.- Specified by:
onDepth
in interfaceLayer1ApiDataListener
- Overrides:
onDepth
in classLayer1ApiUpstreamRelay
- Parameters:
alias
- instrument aliasisBid
- true if it is for bids, false for asksprice
- price where size changedsize
- new size
-
onMboSend
public void onMboSend(java.lang.String alias, java.lang.String orderId, boolean isBid, int price, int size)- Specified by:
onMboSend
in interfaceLayer1ApiMboDataListener
- Overrides:
onMboSend
in classLayer1ApiUpstreamRelay
-
onMboReplace
public void onMboReplace(java.lang.String alias, java.lang.String orderId, int price, int size)- Specified by:
onMboReplace
in interfaceLayer1ApiMboDataListener
- Overrides:
onMboReplace
in classLayer1ApiUpstreamRelay
-
onMboCancel
public void onMboCancel(java.lang.String alias, java.lang.String orderId)- Specified by:
onMboCancel
in interfaceLayer1ApiMboDataListener
- Overrides:
onMboCancel
in classLayer1ApiUpstreamRelay
-
onMarketMode
Description copied from interface:Layer1ApiDataListener
Market mode update.- Specified by:
onMarketMode
in interfaceLayer1ApiDataListener
- Overrides:
onMarketMode
in classLayer1ApiUpstreamRelay
-
onOrderUpdated
Description copied from interface:Layer1ApiTradingListener
Called when order is updated (order creation is also considered an update).- Specified by:
onOrderUpdated
in interfaceLayer1ApiTradingListener
- Overrides:
onOrderUpdated
in classLayer1ApiUpstreamRelay
- Parameters:
orderInfoUpdate
- information about update
-
onOrderExecuted
Description copied from interface:Layer1ApiTradingListener
Called when one of our orders gets executed- Specified by:
onOrderExecuted
in interfaceLayer1ApiTradingListener
- Overrides:
onOrderExecuted
in classLayer1ApiUpstreamRelay
- Parameters:
executionInfo
- information about execution
-
onStatus
Description copied from interface:Layer1ApiTradingListener
Called when instrument status information changes (PnL, number of open orders, position, etc).- Specified by:
onStatus
in interfaceLayer1ApiTradingListener
- Overrides:
onStatus
in classLayer1ApiUpstreamRelay
- Parameters:
statusInfo
- status information
-
onBalance
Description copied from interface:Layer1ApiTradingListener
Called when account balance information changes- Specified by:
onBalance
in interfaceLayer1ApiTradingListener
- Overrides:
onBalance
in classLayer1ApiUpstreamRelay
- Parameters:
balanceInfo
- account balance information
-
onLoginFailed
Description copied from interface:Layer1ApiAdminListener
Failed to login with specified credentials- Specified by:
onLoginFailed
in interfaceLayer1ApiAdminListener
- Overrides:
onLoginFailed
in classLayer1ApiUpstreamRelay
- Parameters:
reason
- reason codemessage
- test message associated with login fail (may be null)
-
onLoginSuccessful
public void onLoginSuccessful()Description copied from interface:Layer1ApiAdminListener
Successful login.- Specified by:
onLoginSuccessful
in interfaceLayer1ApiAdminListener
- Overrides:
onLoginSuccessful
in classLayer1ApiUpstreamRelay
-
onConnectionLost
Description copied from interface:Layer1ApiAdminListener
Connection to server lost- Specified by:
onConnectionLost
in interfaceLayer1ApiAdminListener
- Overrides:
onConnectionLost
in classLayer1ApiUpstreamRelay
- Parameters:
reason
- reason codemessage
- test message associated with login disconnection (may be null)
-
onConnectionRestored
public void onConnectionRestored()Description copied from interface:Layer1ApiAdminListener
Connection to server restored- Specified by:
onConnectionRestored
in interfaceLayer1ApiAdminListener
- Overrides:
onConnectionRestored
in classLayer1ApiUpstreamRelay
-
onSystemTextMessage
Description copied from interface:Layer1ApiAdminListener
Some message from the system. Usually you want to show it to user in some way- Specified by:
onSystemTextMessage
in interfaceLayer1ApiAdminListener
- Overrides:
onSystemTextMessage
in classLayer1ApiUpstreamRelay
- Parameters:
message
- message itselfmessageType
- message type
-
onUserMessage
public void onUserMessage(java.lang.Object data)Description copied from interface:Layer1ApiAdminListener
Allows incorporating arbitrary functionality into protocol- Specified by:
onUserMessage
in interfaceLayer1ApiAdminListener
- Overrides:
onUserMessage
in classLayer1ApiUpstreamRelay
- Parameters:
data
- Message content
-