private async Task <IImmutableList <Block> > WriteIteratorToBlocksAsync( StreamIterator iterator, string eventName) { _logger.Display($"{eventName}..."); _logger.WriteEvent($"{eventName}-Start"); using (var buffer = BufferPool.Rent(_logConstants.MaxBlockSize)) { var blocks = ImmutableList <Block> .Empty; double ru = 0; var cosmosPageCount = 0; int index = 0; int totalWrites = 0; while (iterator.HasMoreResults) { var result = await iterator.ReadNextAsync(); if (result.Stream.Length > buffer.Buffer.Length) { throw new NotSupportedException( $"Query return bigger than buffer: {result.Stream.Length}"); } if (result.Stream.Length > buffer.Buffer.Length - index) { var block = await _logFile.WriteBlockAsync(buffer.Buffer, index); totalWrites += index; blocks = blocks.Add(block); index = 0; } var memory = new Memory <byte>(buffer.Buffer, index, (int)result.Stream.Length); await result.Stream.ReadAsync(memory); index += memory.Length; ++cosmosPageCount; ru += result.RequestCharge; } if (index > 0) { var block = await _logFile.WriteBlockAsync(buffer.Buffer, index); totalWrites += index; blocks = blocks.Add(block); } _logger .AddContext("ru", ru) .AddContext("cosmosPageCount", cosmosPageCount) .AddContext("totalWrites", totalWrites) .AddContext("blockCount", blocks.Count) .WriteEvent(eventName); _logger.Display($"Wrote {totalWrites} bytes in {blocks.Count} blocks"); _logger.Display($"Used {ru} RUs on {cosmosPageCount} Cosmos pages"); _logger.WriteEvent($"{eventName}-End"); return(blocks); } }
public void TestTradeReports() { Assert.AreEqual(0, FdkHelper.ConnectToFdk("ttdemo.fxopen.com", "100106", "123qwe123", "")); var _trader = FdkTradeReports.Trade; StreamIterator <TradeTransactionReport> tradeTransactions = _trader.Server.GetTradeTransactionReports(TimeDirection.Forward, true, null, null, 5000); for (; !tradeTransactions.EndOfStream; tradeTransactions.Next()) { TradeTransactionReport ttr = tradeTransactions.Item; } }
public void TestTradeReports2() { Library.Path = "<FRE>"; Assert.AreEqual(0, FdkHelper.ConnectToFdk("ttdemo.fxopen.com", "50001933", "123123", "")); var _trader = FdkTradeReports.Trade; var startTime = new DateTime(2015, 05, 1, 0, 0, 0); var endTime = new DateTime(2015, 07, 30, 0, 0, 0); StreamIterator <TradeTransactionReport> tradeTransactions = _trader.Server.GetTradeTransactionReports(TimeDirection.Forward, true, startTime, endTime, 50); for (; !tradeTransactions.EndOfStream; tradeTransactions.Next()) { TradeTransactionReport ttr = tradeTransactions.Item; } }