/// <summary> /// Обработка сообщения от адаптера квика /// </summary> private async void adapter_MessageReceived(object sender, QLMessageEventArgs e) { var message = e.Message; try { switch (message.message_type) { case QLMessageType.TransactionReply: Handle((QLTransactionReply)message); break; case QLMessageType.OrderStateChange: Handle((QLOrderStateChange)message); break; case QLMessageType.MoneyPosition: Handle((QLMoneyPosition)message); break; case QLMessageType.Position: await HandleAsync((QLPosition)message); break; case QLMessageType.AccountsList: Handle((QLAccountsList)message); break; case QLMessageType.Fill: await HandleAsync((QLFill)message); break; case QLMessageType.InitEnd: Handle((QLInitEnd)message); break; case QLMessageType.Heartbeat: Handle((QLHeartbeat)message); break; } } catch (Exception exception) { Logger.Error().Print(exception, $"Failed to handle {message}"); } }
private void AdapterOnMessageReceived(object sender, QLMessageEventArgs e) { switch (e.Message.message_type) { case QLMessageType.CandlesResponse: var response = (QLHistoryDataResponse)e.Message; QLAdapter.Log.Debug().Print($"CandlesResponse received, contains {response.candles?.Count} candles", LogFields.RequestId(response.id)); HistoryDataRequest request; using (requestsLock.Lock()) { if (!requests.TryGetValue(response.id, out request)) { return; } } request.ProcessResponse(response); using (requestsLock.Lock()) { requests.Remove(response.id); } break; case QLMessageType.CandlesUpdate: var update = (QLHistoryDataUpdate)e.Message; QLAdapter.Log.Trace().Print($"CandlesUpdate received: {update.candles}"); HistoryDataSubscription subscription = null; using (requestsLock.Lock()) { if (!subscriptions.TryGetValue(update.id, out subscription)) { return; } } subscription.ProcessUpdate(update); break; } }
/// <summary> /// Обработка сообщения от адаптера квика /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void adapter_MessageReceived(object sender, QLMessageEventArgs e) { try { switch (e.Message.message_type) { case QLMessageType.InstrumentParams: await HandleAsync((QLInstrumentParams)e.Message); break; case QLMessageType.OrderBook: await HandleAsync((QLOrderBook)e.Message); break; } } catch (Exception ex) { Logger.Error().Print(ex, $"Failed to handle {e.Message}"); } }