예제 #1
0
        /// <inheritdoc />
        public void LookupBoards(ExchangeBoard criteria, IMessageAdapter adapter = null, MessageOfflineModes offlineMode = MessageOfflineModes.None)
        {
            if (criteria == null)
            {
                throw new ArgumentNullException(nameof(criteria));
            }

            var msg = new BoardLookupMessage
            {
                TransactionId = TransactionIdGenerator.GetNextId(),
                Like          = criteria.Code,
                Adapter       = adapter,
                OfflineMode   = offlineMode,
            };

            LookupBoards(msg);
        }
        private bool ProcessBoardLookup(BoardLookupMessage msg)
        {
            if (msg == null)
            {
                throw new ArgumentNullException(nameof(msg));
            }

            if (msg.Adapter != null && msg.Adapter != this)
            {
                return(base.OnSendInMessage(msg));
            }
            foreach (var board in _exchangeInfoProvider.LookupBoards(msg))
            {
                RaiseNewOutMessage(board.ToMessage(msg.TransactionId));
            }

            return(base.OnSendInMessage(msg));
        }
예제 #3
0
        private bool ProcessBoardLookup(BoardLookupMessage msg)
        {
            if (msg == null)
            {
                throw new ArgumentNullException(nameof(msg));
            }

            if (!msg.IsSubscribe || (msg.Adapter != null && msg.Adapter != this))
            {
                return(base.OnSendInMessage(msg));
            }

            var transId = msg.TransactionId;

            foreach (var board in _exchangeInfoProvider.LookupBoards2(msg))
            {
                RaiseNewOutMessage(board.SetSubscriptionIds(subscriptionId: transId));
            }

            return(base.OnSendInMessage(msg));
        }
예제 #4
0
 /// <inheritdoc />
 public void LookupBoards(BoardLookupMessage criteria)
 {
     Subscribe(new Subscription(criteria));
 }
예제 #5
0
 void IMarketDataProvider.LookupBoards(BoardLookupMessage criteria)
 {
 }
예제 #6
0
 /// <summary>
 /// To call the event <see cref="LookupBoardsResult"/>.
 /// </summary>
 /// <param name="message">Message.</param>
 /// <param name="error">An error of lookup operation. The value will be <see langword="null"/> if operation complete successfully.</param>
 /// <param name="boards">Found boards.</param>
 private void RaiseLookupBoardsResult(BoardLookupMessage message, Exception error, IEnumerable <ExchangeBoard> boards)
 {
     LookupBoardsResult?.Invoke(message, boards, error);
 }
예제 #7
0
 /// <summary>
 /// To call the event <see cref="LookupBoardsResult"/>.
 /// </summary>
 /// <param name="message">Message.</param>
 /// <param name="error">An error of lookup operation. The value will be <see langword="null"/> if operation complete successfully.</param>
 /// <param name="boards">Found boards.</param>
 /// <param name="newBoards">Newly created.</param>
 private void RaiseLookupBoardsResult(BoardLookupMessage message, Exception error, ExchangeBoard[] boards, ExchangeBoard[] newBoards)
 {
     LookupBoardsResult?.Invoke(message, boards, error);
     LookupBoardsResult2?.Invoke(message, boards, newBoards, error);
 }
 private void ProcessBoardLookupMessage(BoardLookupMessage message)
 {
     ProcessInSubscriptionMessage(message, DataType.Board);
 }
예제 #9
0
 /// <inheritdoc />
 public void LookupBoards(BoardLookupMessage criteria)
 {
     Subscribe(new Subscription(criteria, (SecurityMessage)null));
 }