/// <inheritdoc /> protected override async Task <CallResult <UpdateSubscription> > DoStart() { if (limit.HasValue && limit != 5 && limit != 10 && limit != 20) { return(new CallResult <UpdateSubscription>(null, new ArgumentError("Limit should be one of the following: 5, 10, 20 or null for full order book"))); } CallResult <UpdateSubscription> subResult; if (limit == null) { subResult = await socketClient.SubscribeToDepthStreamAsync(Symbol, HandleUpdate).ConfigureAwait(false); } else { subResult = await socketClient.SubscribeToPartialBookDepthStreamAsync(Symbol, limit.Value, HandleUpdate).ConfigureAwait(false); } if (!subResult.Success) { return(new CallResult <UpdateSubscription>(null, subResult.Error)); } Status = OrderBookStatus.Syncing; if (limit == null) { var bookResult = await restClient.GetOrderBookAsync(Symbol, limit ?? 10000).ConfigureAwait(false); if (!bookResult.Success) { await socketClient.UnsubscribeAll().ConfigureAwait(false); return(new CallResult <UpdateSubscription>(null, bookResult.Error)); } SetInitialOrderBook(bookResult.Data.LastUpdateId, bookResult.Data.Asks, bookResult.Data.Bids); } else { while (!initialUpdateReceived && Status == OrderBookStatus.Syncing) { await Task.Delay(10).ConfigureAwait(false); } } return(new CallResult <UpdateSubscription>(subResult.Data, null)); }
/// <inheritdoc /> protected override async Task <CallResult <UpdateSubscription> > DoStart() { CallResult <UpdateSubscription> subResult; if (limit == null) { subResult = await socketClient.SubscribeToDepthStreamAsync(Symbol, updateInterval, HandleUpdate).ConfigureAwait(false); } else { subResult = await socketClient.SubscribeToPartialBookDepthStreamAsync(Symbol, limit.Value, updateInterval, HandleUpdate).ConfigureAwait(false); } if (!subResult.Success) { return(new CallResult <UpdateSubscription>(null, subResult.Error)); } Status = OrderBookStatus.Syncing; if (limit == null) { var bookResult = await restClient.GetOrderBookAsync(Symbol, limit ?? 5000).ConfigureAwait(false); if (!bookResult.Success) { await socketClient.UnsubscribeAll().ConfigureAwait(false); return(new CallResult <UpdateSubscription>(null, bookResult.Error)); } SetInitialOrderBook(bookResult.Data.LastUpdateId, bookResult.Data.Asks, bookResult.Data.Bids); } else { while (!initialUpdateReceived && Status == OrderBookStatus.Syncing) { await Task.Delay(10).ConfigureAwait(false); } } return(new CallResult <UpdateSubscription>(subResult.Data, null)); }