Esempio n. 1
0
        /// <summary>
        ///     Обработчик события изменения статуса подписки
        /// </summary>
        private void TradeSubscriptionStatusReceived(AdapterEventArgs <TradeSubscriptionStatus> args)
        {
            args.MarkHandled();

            Logger.Debug().Print(
                "Trade subscription status received",
                LogFields.Id(args.Message.id),
                LogFields.Status((TradeSubscriptionStatus.StatusCode)args.Message.status_code),
                LogFields.Message(args.Message.text_message)
                );
        }
Esempio n. 2
0
        /// <summary>
        /// Сохранить сделку, требующую отложенной обработки
        /// </summary>
        /// <param name="message"></param>
        public void PutPendingFill(QLFill message)
        {
            log.Debug().Print("Postpone fill processing", LogFields.Message(message));
            using (locker.WriteLock())
            {
                if (pendingFills.ContainsKey(message.trade_num))
                {
                    log.Warn().Print($"Fill duplicate received", LogFields.Id(message.trade_num));
                    return;
                }

                pendingFills[message.trade_num] = message;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Сохранить идентификатор полученной сделки. Для дальнейшего анализа на получение дубликата сообщения
        /// </summary>
        /// <param name="id">Биржевой идентификатор сделки</param>
        /// <returns>true - если сделка уже есть в контейнере, иначе false</returns>
        public bool PutFillId(QLFill fill)
        {
            using (lockerReceivedFills.WriteLock())
            {
                if (receivedFills.Contains(fill.trade_num))
                {
                    log.Warn().Print($"Fill duplicate received", LogFields.Id(fill.trade_num));
                    return(true);
                }

                receivedFills.Add(fill.trade_num);
            }

            return(false);
        }