public async Task SubscribeToLiveTrendbar(long accountId, bool isLive, long symbolId, ProtoOATrendbarPeriod period) { VerifyConnection(); var client = GetClient(isLive); using var cancelationTokenSource = new CancellationTokenSource(); ProtoOASubscribeLiveTrendbarRes receivedResponse = null; using var disposable = client.OfType <ProtoOASubscribeLiveTrendbarRes>().Where(response => response.CtidTraderAccountId == accountId) .Subscribe(response => { receivedResponse = response; cancelationTokenSource.Cancel(); }); var requestMessage = new ProtoOASubscribeLiveTrendbarReq { CtidTraderAccountId = accountId, Period = period, SymbolId = symbolId }; await SendMessage(requestMessage, ProtoOAPayloadType.ProtoOaSubscribeLiveTrendbarReq, client, cancelationTokenSource, () => receivedResponse is not null); }
private void Process_Subscribe_Live_Trendbar_Res() { ProtoOASubscribeLiveTrendbarRes args = Serializer.Deserialize <ProtoOASubscribeLiveTrendbarRes>(_processorMemoryStream); Log.Info("ProtoOASubscribeLiveTrendbarRes:: " + $"ctidTraderAccountId: {args.ctidTraderAccountId}"); OnSubscribeLiveTrendbarResReceived?.Invoke(args); }