MessageAdapter
The base adapter converts messages Message to the command of the trading system and back.
Inherits: BaseLogReceiver
Implements: IMessageAdapter, IMessageTransport, IPersistable, ILogReceiver, ILogSource, IDisposable, ICloneable<IMessageAdapter>, ICloneable, INotifyPropertyChanged
Constructors
protected MessageAdapter(IdGenerator transactionIdGenerator)
messageAdapter = MessageAdapter(transactionIdGenerator)
Initialize MessageAdapter.
- transactionIdGenerator
- Transaction id generator.
Properties
public virtual string[] AssociatedBoards { get; }
value = messageAdapter.AssociatedBoards
The adapter can process subscription only with instruments associated with the specified board.
public virtual IEnumerable<Level1Fields> CandlesBuildFrom { get; }
value = messageAdapter.CandlesBuildFrom
Possible options for candles building.
public virtual MessageAdapterCategories Categories { get; }
value = messageAdapter.Categories
Message adapter categories.
public virtual bool CheckTimeFrameByRequest { get; }
value = messageAdapter.CheckTimeFrameByRequest
Check possible time-frame by request.
public virtual TimeSpan DisconnectTimeout { get; }
value = messageAdapter.DisconnectTimeout
Gets the timeout to wait for a graceful disconnect.
public virtual bool EnqueueSubscriptions { get; set; }
value = messageAdapter.EnqueueSubscriptions
messageAdapter.EnqueueSubscriptions = value
Enqueue subscriptions.
public virtual bool ExtraSetup { get; }
value = messageAdapter.ExtraSetup
The adapter requires extra setup.
public TimeSpan FaultDelay { get; set; }
value = messageAdapter.FaultDelay
messageAdapter.FaultDelay = value
Gets or sets the delay applied between faulted iterations.
public virtual string FeatureName { get; }
value = messageAdapter.FeatureName
Feature name.
public IFileSystem FileSystem { get; set; }
value = messageAdapter.FileSystem
messageAdapter.FileSystem = value
IFileSystem
public virtual bool HeartbeatBeforeConnect { get; }
value = messageAdapter.HeartbeatBeforeConnect
Start sending TimeMessage before connection established.
public TimeSpan HeartbeatInterval { get; set; }
value = messageAdapter.HeartbeatInterval
messageAdapter.HeartbeatInterval = value
Server check interval for track the connection alive. The value is Zero turned off tracking.
public virtual bool IsAutoReplyOnTransactonalUnsubscription { get; }
value = messageAdapter.IsAutoReplyOnTransactonalUnsubscription
Send auto response for OrderStatusMessage and PortfolioLookupMessage unsubscribes.
public virtual bool IsFullCandlesOnly { get; }
value = messageAdapter.IsFullCandlesOnly
Translates CandleMessage as only fully filled.
public virtual bool IsNativeIdentifiers { get; }
value = messageAdapter.IsNativeIdentifiers
Identify security in messages by native identifier Native.
public virtual bool IsNativeIdentifiersPersistable { get; }
value = messageAdapter.IsNativeIdentifiersPersistable
Native identifier can be stored.
public virtual bool? IsPositionsEmulationRequired { get; }
value = messageAdapter.IsPositionsEmulationRequired
Adapter required emulation PositionChangeMessage.
public virtual bool IsReplaceCommandEditCurrent { get; }
value = messageAdapter.IsReplaceCommandEditCurrent
Is the OrderReplaceMessage command edit a current order.
public virtual bool IsSecurityNewsOnly { get; }
value = messageAdapter.IsSecurityNewsOnly
Adapter provides news related with specified security.
public virtual bool IsSupportExecutionsPnL { get; }
value = messageAdapter.IsSupportExecutionsPnL
Adapter fills PnL.
public virtual bool IsSupportOrderBookIncrements { get; }
value = messageAdapter.IsSupportOrderBookIncrements
Adapter translates incremental order books.
public virtual bool IsSupportSubscriptions { get; }
value = messageAdapter.IsSupportSubscriptions
Support any subscriptions (ticks, order books etc.).
public virtual bool IsSupportTransactionLog { get; }
value = messageAdapter.IsSupportTransactionLog
Adapter translates orders changes on reply of OrderStatusMessage.
public virtual TimeSpan IterationInterval { get; set; }
value = messageAdapter.IterationInterval
messageAdapter.IterationInterval = value
Interval between iterations.
public virtual TimeSpan? LookupTimeout { get; }
value = messageAdapter.LookupTimeout
Lookup timeout.
public int MaxParallelMessages { get; set; }
value = messageAdapter.MaxParallelMessages
messageAdapter.MaxParallelMessages = value
Gets or sets the maximum number of parallel (non-control) messages that can be processed. Must be greater than or equal to1.
public override string Name { get; set; }
value = messageAdapter.Name
messageAdapter.Name = value
Name.
public virtual IEnumerable<MessageTypes> NotSupportedResultMessages { get; set; }
value = messageAdapter.NotSupportedResultMessages
messageAdapter.NotSupportedResultMessages = value
Not supported by adapter result message types.
public virtual Type OrderConditionType { get; }
value = messageAdapter.OrderConditionType
Type of OrderCondition.
public Platforms Platform { get; protected set; }
value = messageAdapter.Platform
messageAdapter.Platform = value
Bit process, which can run the adapter.
public virtual IEnumerable<MessageTypeInfo> PossibleSupportedMessages { get; set; }
value = messageAdapter.PossibleSupportedMessages
messageAdapter.PossibleSupportedMessages = value
Possible supported by adapter message types.
public ReConnectionSettings ReConnectionSettings { get; }
value = messageAdapter.ReConnectionSettings
Connection tracking settings IMessageAdapter with a server.
public virtual IEnumerable<ValueTuple<string, Type>> SecurityExtendedFields { get; }
value = messageAdapter.SecurityExtendedFields
Names of extended security fields in SecurityMessage.
public virtual string StorageName { get; }
value = messageAdapter.StorageName
The storage name, associated with the adapter.
public virtual IEnumerable<MessageTypes> SupportedInMessages { get; set; }
value = messageAdapter.SupportedInMessages
messageAdapter.SupportedInMessages = value
Supported by adapter message types.
internal IEnumerable<DataType> SupportedMarketDataTypes { get; set; }
value = messageAdapter.SupportedMarketDataTypes
messageAdapter.SupportedMarketDataTypes = value
public virtual IEnumerable<int> SupportedOrderBookDepths { get; }
value = messageAdapter.SupportedOrderBookDepths
Available options for MaxDepth.
public IdGenerator TransactionIdGenerator { get; set; }
value = messageAdapter.TransactionIdGenerator
messageAdapter.TransactionIdGenerator = value
Transaction id generator.
public virtual bool UseInChannel { get; }
value = messageAdapter.UseInChannel
Use channels for in messages.
public virtual bool UseOutChannel { get; }
value = messageAdapter.UseOutChannel
Use channels for out messages.
Methods
protected virtual ValueTask BoardLookupAsync(BoardLookupMessage lookupMsg, CancellationToken cancellationToken)
result = messageAdapter.BoardLookupAsync(lookupMsg, cancellationToken)
protected virtual ValueTask CancelOrderAsync(OrderCancelMessage cancelMsg, CancellationToken cancellationToken)
result = messageAdapter.CancelOrderAsync(cancelMsg, cancellationToken)
protected virtual ValueTask CancelOrderGroupAsync(OrderGroupCancelMessage cancelMsg, CancellationToken cancellationToken)
result = messageAdapter.CancelOrderGroupAsync(cancelMsg, cancellationToken)
protected virtual ValueTask ChangePasswordAsync(ChangePasswordMessage pwdMsg, CancellationToken cancellationToken)
result = messageAdapter.ChangePasswordAsync(pwdMsg, cancellationToken)
public virtual IMessageAdapter Clone()
result = messageAdapter.Clone()
Create a copy of MessageAdapter.
Returns: Copy.
protected virtual ValueTask ConnectAsync(ConnectMessage connectMsg, CancellationToken cancellationToken)
result = messageAdapter.ConnectAsync(connectMsg, cancellationToken)
public virtual IOrderLogMarketDepthBuilder CreateOrderLogMarketDepthBuilder(SecurityId securityId)
result = messageAdapter.CreateOrderLogMarketDepthBuilder(securityId)
Create market depth builder.
- securityId
- Security ID.
Returns: Order log to market depth builder.
protected virtual ValueTask DisconnectAsync(DisconnectMessage disconnectMsg, CancellationToken cancellationToken)
result = messageAdapter.DisconnectAsync(disconnectMsg, cancellationToken)
public virtual IAsyncEnumerable<DataType> GetSupportedMarketDataTypesAsync(SecurityId securityId, DateTime? from, DateTime? to)
result = messageAdapter.GetSupportedMarketDataTypesAsync(securityId, from, to)
Get supported by adapter message types.
- securityId
- SecurityId
- from
- Start date for request. If , then all available messages will be returned.
- to
- End date for request. If , then all available messages will be returned.
Returns: Supported by adapter market data types.
private void InitMessageLocalTime(Message message)
messageAdapter.InitMessageLocalTime(message)
Initialize local timestamp Message.
- message
- Message.
public virtual bool IsAllDownloadingSupported(DataType dataType)
result = messageAdapter.IsAllDownloadingSupported(dataType)
Is for the specified all securities downloading enabled.
- dataType
- Data type info.
Returns: Check result.
public virtual bool IsSecurityRequired(DataType dataType)
result = messageAdapter.IsSecurityRequired(dataType)
Support filtering subscriptions (subscribe/unsubscribe for specified security).
- dataType
- Data type info.
Returns: Check result.
public virtual bool IsSupportCandlesPriceLevels(MarketDataMessage subscription)
result = messageAdapter.IsSupportCandlesPriceLevels(subscription)
Support candles PriceLevels.
- subscription
- MarketDataMessage
Returns: Check result.
public virtual bool IsSupportCandlesUpdates(MarketDataMessage subscription)
result = messageAdapter.IsSupportCandlesUpdates(subscription)
Support candles subscription and live updates.
- subscription
- MarketDataMessage
Returns: Check result.
public override void Load(SettingsStorage storage)
messageAdapter.Load(storage)
Load settings.
- storage
- Settings storage.
protected virtual ValueTask MarketDataAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.MarketDataAsync(mdMsg, cancellationToken)
protected virtual ValueTask OnCandlesSubscriptionAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.OnCandlesSubscriptionAsync(mdMsg, cancellationToken)
Handles subscription request for candles data. Override to provide implementation for candles subscription processing. The default implementation throws NotSupported.
- mdMsg
- Market data subscription message.
- cancellationToken
- Cancellation token to cancel the operation.
Returns: A ValueTask representing the asynchronous operation.
protected virtual ValueTask OnLevel1SubscriptionAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.OnLevel1SubscriptionAsync(mdMsg, cancellationToken)
Handles subscription request for level1 data. Override to provide implementation for level1 subscription processing. The default implementation throws NotSupported.
- mdMsg
- Market data subscription message.
- cancellationToken
- Cancellation token to cancel the operation.
Returns: A ValueTask representing the asynchronous operation.
protected virtual ValueTask OnMarketDepthSubscriptionAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.OnMarketDepthSubscriptionAsync(mdMsg, cancellationToken)
Handles subscription request for market depth data. Override to provide implementation for market depth subscription processing. The default implementation throws NotSupported.
- mdMsg
- Market data subscription message.
- cancellationToken
- Cancellation token to cancel the operation.
Returns: A ValueTask representing the asynchronous operation.
protected virtual ValueTask OnNewsSubscriptionAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.OnNewsSubscriptionAsync(mdMsg, cancellationToken)
Handles subscription request for news data. Override to provide implementation for news subscription processing. The default implementation throws NotSupported.
- mdMsg
- Market data subscription message.
- cancellationToken
- Cancellation token to cancel the operation.
Returns: A ValueTask representing the asynchronous operation.
protected virtual ValueTask OnOrderLogSubscriptionAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.OnOrderLogSubscriptionAsync(mdMsg, cancellationToken)
Handles subscription request for order log (trades/transactions) data. Override to provide implementation for order log subscription processing. The default implementation throws NotSupported.
- mdMsg
- Market data subscription message.
- cancellationToken
- Cancellation token to cancel the operation.
Returns: A ValueTask representing the asynchronous operation.
protected void OnPropertyChanged(string propertyName)
messageAdapter.OnPropertyChanged(propertyName)
Raise PropertyChanged event.
- propertyName
- The name of the property that changed.
protected virtual ValueTask OnSendInMessageAsync(Message message, CancellationToken cancellationToken)
result = messageAdapter.OnSendInMessageAsync(message, cancellationToken)
Send in message handler.
- message
- Message
- cancellationToken
- CancellationToken
Returns: ValueTask
protected virtual ValueTask OnTFCandlesSubscriptionAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.OnTFCandlesSubscriptionAsync(mdMsg, cancellationToken)
Handles subscription request for time-frame candles (TF candles) data. Override to provide implementation for TF candles subscription processing. The default implementation throws NotSupported.
- mdMsg
- Market data subscription message.
- cancellationToken
- Cancellation token to cancel the operation.
Returns: A ValueTask representing the asynchronous operation.
protected virtual ValueTask OnTicksSubscriptionAsync(MarketDataMessage mdMsg, CancellationToken cancellationToken)
result = messageAdapter.OnTicksSubscriptionAsync(mdMsg, cancellationToken)
Handles subscription request for ticks data. Override to provide implementation for ticks subscription processing. The default implementation throws NotSupported.
- mdMsg
- Market data subscription message.
- cancellationToken
- Cancellation token to cancel the operation.
Returns: A ValueTask representing the asynchronous operation.
protected virtual ValueTask OrderStatusAsync(OrderStatusMessage statusMsg, CancellationToken cancellationToken)
result = messageAdapter.OrderStatusAsync(statusMsg, cancellationToken)
protected virtual ValueTask PortfolioLookupAsync(PortfolioLookupMessage lookupMsg, CancellationToken cancellationToken)
result = messageAdapter.PortfolioLookupAsync(lookupMsg, cancellationToken)
protected virtual ValueTask RegisterOrderAsync(OrderRegisterMessage regMsg, CancellationToken cancellationToken)
result = messageAdapter.RegisterOrderAsync(regMsg, cancellationToken)
protected virtual ValueTask ReplaceOrderAsync(OrderReplaceMessage replaceMsg, CancellationToken cancellationToken)
result = messageAdapter.ReplaceOrderAsync(replaceMsg, cancellationToken)
protected virtual ValueTask ResetAsync(ResetMessage resetMsg, CancellationToken cancellationToken)
result = messageAdapter.ResetAsync(resetMsg, cancellationToken)
public override void Save(SettingsStorage storage)
messageAdapter.Save(storage)
Save settings.
- storage
- Settings storage.
protected virtual ValueTask SecurityLookupAsync(SecurityLookupMessage lookupMsg, CancellationToken cancellationToken)
result = messageAdapter.SecurityLookupAsync(lookupMsg, cancellationToken)
public virtual ValueTask SendInMessageAsync(Message message, CancellationToken cancellationToken)
result = messageAdapter.SendInMessageAsync(message, cancellationToken)
Processes a generic message asynchronously.
- message
- The message to process.
- cancellationToken
- CancellationToken
protected ValueTask SendOutConnectionStateAsync(ConnectionStates state, CancellationToken cancellationToken)
result = messageAdapter.SendOutConnectionStateAsync(state, cancellationToken)
Send to CancellationToken) connection state message.
- state
- ConnectionStates
- cancellationToken
- Cancellation token.
protected ValueTask SendOutDisconnectMessageAsync(bool expected, CancellationToken cancellationToken)
result = messageAdapter.SendOutDisconnectMessageAsync(expected, cancellationToken)
Send to CancellationToken) disconnect message.
- expected
- Is disconnect expected.
- cancellationToken
- Cancellation token.
protected ValueTask SendOutDisconnectMessageAsync(Exception error, CancellationToken cancellationToken)
result = messageAdapter.SendOutDisconnectMessageAsync(error, cancellationToken)
Send to CancellationToken) disconnect message.
- error
- Error info. Can be .
- cancellationToken
- Cancellation token.
protected ValueTask SendOutErrorAsync(string description, CancellationToken cancellationToken)
result = messageAdapter.SendOutErrorAsync(description, cancellationToken)
Initialize a new message ErrorMessage and pass it to the method CancellationToken).
- description
- Error details.
- cancellationToken
- Cancellation token.
protected ValueTask SendOutErrorAsync(Exception error, CancellationToken cancellationToken)
result = messageAdapter.SendOutErrorAsync(error, cancellationToken)
Initialize a new message ErrorMessage and pass it to the method CancellationToken).
- error
- Error details.
- cancellationToken
- Cancellation token.
public virtual ValueTask SendOutMessageAsync(Message message, CancellationToken cancellationToken)
result = messageAdapter.SendOutMessageAsync(message, cancellationToken)
Send outgoing message and raise NewOutMessageAsync event.
- message
- Message.
- cancellationToken
- CancellationToken
protected ValueTask SendSubscriptionFinishedAsync(long originalTransactionId, CancellationToken cancellationToken, DateTime? nextFrom)
result = messageAdapter.SendSubscriptionFinishedAsync(originalTransactionId, cancellationToken, nextFrom)
Initialize a new message SubscriptionFinishedMessage and pass it to the method CancellationToken).
- originalTransactionId
- ID of the original message for which this message is a response.
- cancellationToken
- Cancellation token.
- nextFrom
- NextFrom.
protected ValueTask SendSubscriptionNotSupportedAsync(long originalTransactionId, CancellationToken cancellationToken)
result = messageAdapter.SendSubscriptionNotSupportedAsync(originalTransactionId, cancellationToken)
Initialize a new message SubscriptionResponseMessage and pass it to the method CancellationToken).
- originalTransactionId
- ID of the original message for which this message is a response.
- cancellationToken
- Cancellation token.
protected ValueTask SendSubscriptionOnlineAsync(long originalTransactionId, CancellationToken cancellationToken)
result = messageAdapter.SendSubscriptionOnlineAsync(originalTransactionId, cancellationToken)
Initialize a new message SubscriptionOnlineMessage and pass it to the method CancellationToken).
- originalTransactionId
- ID of the original message for which this message is a response.
- cancellationToken
- Cancellation token.
protected ValueTask SendSubscriptionReplyAsync(long originalTransactionId, CancellationToken cancellationToken, Exception error)
result = messageAdapter.SendSubscriptionReplyAsync(originalTransactionId, cancellationToken, error)
Initialize a new message SubscriptionResponseMessage and pass it to the method CancellationToken).
- originalTransactionId
- ID of the original message for which this message is a response.
- cancellationToken
- Cancellation token.
- error
- Subscribe or unsubscribe error info. To be set if the answer.
protected ValueTask SendSubscriptionResultAsync(ISubscriptionMessage message, CancellationToken cancellationToken)
result = messageAdapter.SendSubscriptionResultAsync(message, cancellationToken)
Initialize a new message SubscriptionOnlineMessage or SubscriptionFinishedMessage and pass it to the method CancellationToken).
- message
- Subscription.
- cancellationToken
- Cancellation token.
protected virtual ValueTask TimeAsync(TimeMessage timeMsg, CancellationToken cancellationToken)
result = messageAdapter.TimeAsync(timeMsg, cancellationToken)
protected virtual bool ValidateSecurityId(SecurityId secId)
result = messageAdapter.ValidateSecurityId(secId)
Validate the specified security id is supported by the adapter and subscription can be done.
- secId
- SecurityId.
Returns: Check result.
Events
public event Func<Message, CancellationToken, ValueTask> NewOutMessageAsync
messageAdapter.NewOutMessageAsync += handler
New message event.