public async Task UnsubscribeFromSpots(long accountId, bool isLive, params long[] symbolIds) { VerifyConnection(); var client = GetClient(isLive); using var cancelationTokenSource = new CancellationTokenSource(); ProtoOAUnsubscribeSpotsRes receivedResponse = null; using var disposable = client.OfType <ProtoOAUnsubscribeSpotsRes>().Where(response => response.CtidTraderAccountId == accountId) .Subscribe(response => { receivedResponse = response; cancelationTokenSource.Cancel(); }); var requestMessage = new ProtoOAUnsubscribeSpotsReq { CtidTraderAccountId = accountId, }; requestMessage.SymbolId.AddRange(symbolIds); await SendMessage(requestMessage, ProtoOAPayloadType.ProtoOaUnsubscribeSpotsReq, client, cancelationTokenSource, () => receivedResponse is not null); }
private void Process_Unsubscribe_Spots_Res() { ProtoOAUnsubscribeSpotsRes args = Serializer.Deserialize <ProtoOAUnsubscribeSpotsRes>(_processorMemoryStream); Log.Info("ProtoOAUnsubscribeSpotsRes:: " + $"ctidTraderAccountId: {args.ctidTraderAccountId}"); OnUnsubscribeSpotsResReceived?.Invoke(args); }
private void OnUnsubscribeSpotsResponse(ProtoOAUnsubscribeSpotsRes e, string clientMsgId) { var streamMessage = new StreamMessage <ProtoOAUnsubscribeSpotsRes>(e, clientMsgId); _unsubscribeSpotsResponseStream.OnNext(streamMessage); }