コード例 #1
0
        public void SubscribeOrderBook(string symbol, int limit, Action <OrderBookEventArgs> callback, Action <Exception> exception, CancellationToken cancellationToken)
        {
            try
            {
                var orderBookCache = new OrderBookCache(binanceApi, new DepthWebSocketClient());
                orderBookCache.Subscribe(symbol, limit, e =>
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        orderBookCache.Unsubscribe();
                        return;
                    }

                    try
                    {
                        var orderBook = NewOrderBook(e.OrderBook);
                        callback.Invoke(new OrderBookEventArgs {
                            OrderBook = orderBook
                        });
                    }
                    catch (Exception ex)
                    {
                        orderBookCache.Unsubscribe();
                        exception.Invoke(ex);
                    }
                });
            }
            catch (Exception ex)
            {
                exception.Invoke(ex);
            }
        }
コード例 #2
0
        public Task SubscribeOrderBook(string symbol, int limit, Action <OrderBookEventArgs> callback, Action <Exception> exception, CancellationToken cancellationToken)
        {
            var tcs = new TaskCompletionSource <object>();

            var binanceApi     = new BinanceApi();
            var orderBookCache = new OrderBookCache(binanceApi, new DepthWebSocketClient());

            orderBookCache.Subscribe(symbol, limit, e =>
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    orderBookCache.Unsubscribe();
                    return;
                }

                var orderBook = NewOrderBook(e.OrderBook);

                try
                {
                    callback.Invoke(new OrderBookEventArgs {
                        OrderBook = orderBook
                    });
                }
                catch (Exception ex)
                {
                    orderBookCache.Unsubscribe();
                    exception.Invoke(ex);
                    return;
                }
            });

            tcs.SetResult(null);

            return(tcs.Task);
        }
コード例 #3
0
        public void Unsubscribe()
        {
            var api    = new Mock <IBinanceApi>().Object;
            var client = new Mock <IDepthClient>().Object;

            var cache = new OrderBookCache(api, client);

            // Can call unsubscribe before subscribe or multiple times without fail.
            cache.Unsubscribe();
            cache.Unsubscribe();
        }