Beispiel #1
0
 public override Task GetPublicTradeUpdates(PublicTradesUpdatesRequest request,
                                            IServerStreamWriter <PublicTradeUpdate> responseStream,
                                            ServerCallContext context)
 {
     _publicTradeUpdate.Add(responseStream);
     return(Task.CompletedTask);
 }
        public override async Task GetPublicTradeUpdates(PublicTradesUpdatesRequest request,
                                                         IServerStreamWriter <PublicTradeUpdate> responseStream,
                                                         ServerCallContext context)
        {
            Console.WriteLine($"New public trades stream connect. peer:{context.Peer}");

            var data = await _tradesAdapterClient.GetTradesByAssetPairIdAsync(request.AssetPairId, 0, 50);

            var trades = _mapper.Map <List <PublicTrade> >(data.Records);

            var initData = new PublicTradeUpdate();

            initData.Trades.AddRange(trades);

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

            var task = await _publicTradesStreamService.RegisterStreamAsync(streamInfo, new List <PublicTradeUpdate> {
                initData
            });

            await task;
        }