/// <summary> /// Создаёт объект на основе /// </summary> public CGateOrderBookUpdate(CgmOrdersAggr rowUpdate, string instrumentCode) { IsinId = rowUpdate.IsinId; InstrumentCode = instrumentCode; Type = CGateOrderBookUpdateType.RowUpdate; ReplId = rowUpdate.ReplId; ReplAct = rowUpdate.ReplAct; Price = (decimal)rowUpdate.Price; Quantity = rowUpdate.Volume; ReplRev = rowUpdate.ReplRev; Operation = rowUpdate.Dir == 1 ? OrderOperation.Buy : OrderOperation.Sell; }
public override void Handle(CgmOrdersAggr record) { var code = instrumentResolver.GetShortIsinByIsinId(record.IsinId); if (string.IsNullOrEmpty(code)) { EnqueuePendingMessage(record); return; } futOrderBookEmitter.Handle(record); optOrderBookEmitter.Handle(record); }
/// <summary> /// Обработчик сообщения cgate об обновлении строки стакана /// </summary> public void Handle(CgmOrdersAggr record) { if (record.StreamName != streamName) { return; } var code = instrumentResolver.GetShortIsinByIsinId(record.IsinId); if (string.IsNullOrEmpty(code)) { throw new ArgumentException($"Can't resolve instrument code for isinId={record.IsinId}"); } orderBooksUdatesQueue.Enqueue(new CGateOrderBookUpdate(record, code)); }
public void Handle(CgmOrdersAggr message) { }