Esempio n. 1
0
 public override Task GetOrderbookUpdates(OrderbookUpdatesRequest request,
                                          IServerStreamWriter <Orderbook> responseStream,
                                          ServerCallContext context)
 {
     _orderBookUpdate.Add(responseStream);
     return(Task.CompletedTask);
 }
Esempio n. 2
0
        public override async Task GetOrderbookUpdates(OrderbookUpdatesRequest request,
                                                       IServerStreamWriter <Orderbook> responseStream,
                                                       ServerCallContext context)
        {
            Console.WriteLine($"New orderbook stream connect. peer:{context.Peer}");

            var data = await _orderbooksService.GetAsync(request.AssetPairId);

            var orderbooks = new List <Orderbook>();

            foreach (var item in data)
            {
                var orderbook = _mapper.Map <Orderbook>(item);
                orderbook.Asks.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(item.Asks));
                orderbook.Bids.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(item.Bids));
                orderbooks.Add(orderbook);
            }

            var streamInfo = new StreamInfo <Orderbook>
            {
                Stream           = responseStream,
                CancelationToken = context.CancellationToken,
                Keys             = new [] { request.AssetPairId },
                Peer             = context.Peer
            };

            var task = await _orderbookStreamService.RegisterStreamAsync(streamInfo, orderbooks);

            await task;
        }
Esempio n. 3
0
        public override Task GetOrderbookUpdates(OrderbookUpdatesRequest request,
                                                 IServerStreamWriter <Orderbook> responseStream,
                                                 ServerCallContext context)
        {
            Console.WriteLine($"New orderbook stream connect. peer:{context.Peer}");

            var streamInfo = new StreamInfo <Orderbook>
            {
                Stream = responseStream,
                Key    = request.AssetPairId,
                Peer   = context.Peer
            };

            return(_orderbookUpdateService.RegisterStream(streamInfo));
        }
Esempio n. 4
0
        public override async Task GetOrderbookUpdates(OrderbookUpdatesRequest request,
                                                       IServerStreamWriter <Orderbook> responseStream,
                                                       ServerCallContext context)
        {
            Console.WriteLine($"New orderbook stream connect. peer:{context.Peer}");
            var assetPairIds = new List <string>();

            if (!string.IsNullOrEmpty(request.AssetPairId))
            {
                assetPairIds.Add(request.AssetPairId);
            }
            else
            {
                assetPairIds = request.AssetPairIds?.ToList() ?? new List <string>();
            }

            var data = await _orderbooksService.GetAsync();

            if (assetPairIds.Any())
            {
                data = data.Where(x => assetPairIds.Contains(x.AssetPairId, StringComparer.InvariantCultureIgnoreCase))
                       .ToList();
            }

            var orderbooks = new List <Orderbook>();

            foreach (var item in data)
            {
                var orderbook = _mapper.Map <Orderbook>(item);
                orderbook.Asks.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(item.Asks));
                orderbook.Bids.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(item.Bids));
                orderbooks.Add(orderbook);
            }

            var streamInfo = new StreamInfo <Orderbook>
            {
                Stream           = responseStream,
                CancelationToken = context.CancellationToken,
                Keys             = assetPairIds.ToArray(),
                Peer             = context.Peer
            };

            var task = await _orderbookUpdateService.RegisterStreamAsync(streamInfo, orderbooks);

            await task;
        }
Esempio n. 5
0
        static async Task UpdateThread(TradingApiClient client, string filter)
        {
            var reqiest = new OrderbookUpdatesRequest();

            reqiest.AssetPairId = filter;
            var stream = client.PublicApi.GetOrderbookUpdates(reqiest);

            var token = new CancellationToken();

            while (await stream.ResponseStream.MoveNext(token))
            {
                var update = stream.ResponseStream.Current;

                foreach (Orderbook.Types.PriceVolume ask in update.Asks)
                {
                    var price = decimal.Parse(ask.P);
                    if (ask.V == "0")
                    {
                        _ask.Remove(price);
                    }
                    else
                    {
                        _ask[price] = ask.V;
                    }
                }

                foreach (Orderbook.Types.PriceVolume bid in update.Bids)
                {
                    var price = decimal.Parse(bid.P);
                    if (bid.V == "0")
                    {
                        _bid.Remove(price);
                    }
                    else
                    {
                        _bid[price] = bid.V;
                    }
                }
            }
        }