示例#1
0
        /// <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));
        }
示例#2
0
        /// <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));
        }