internal static async Task ApplyPpcParseJsonArray <TJ, TC>(this PullFuncStream data, IConsumer <TC> consumer, IDataAdapter <TJ, TC> adapter, JsonSerializer serializer, CancellationToken token, Encoding enc, bool detectEncodingFromBom, int bufferSize, BlockingCollection <TJ> bc, CancellationTokenSource localCts, int ppcBuffSize) { var errList = new List <Exception>(); var ppcProducerTask = GetParseJsonArrayProducerTask(data, serializer, token, enc, detectEncodingFromBom, bufferSize, bc, localCts); await RunPpcJsonArray(bc, localCts, consumer, adapter, token, ppcBuffSize, errList) .ConfigureAwait(false); try { await ppcProducerTask.ConfigureAwait(false); } catch (Exception e) { errList.Add(e); } if (errList.Count > 0) { throw new AggregateException("Error during JSON PULL streaming.", errList); } }
public void Properties_Are_Simple_Accessors() { using (var mem = new MemoryStream(new byte[0])) { var _ = new PullFuncStream(mem, true); Assert.True(_.Dispose); Assert.True(ReferenceEquals(_.Readable, mem)); } }
public void Ctor_Throws_Error_When_Stream_Is_Not_Readable() { var mem = Substitute.For <Stream>(); mem.CanRead.Returns(false); Assert.True(Assert.Throws <DdnDfException>(() => { var _ = new PullFuncStream(mem, true); }).ErrorCode == DdnDfErrorCode.Unspecified); }
internal static Task GetParseJsonArrayProducerTask <TJ>(PullFuncStream data, JsonSerializer serializer, CancellationToken token, Encoding enc, bool detectEncodingFromBom, int bufferSize, BlockingCollection <TJ> bc, CancellationTokenSource localCts) { return(Task.Run(() => data.Readable.FromJsonArrayParallely(bc, serializer, token, localCts, enc, bufferSize, data.Dispose, true, true, detectEncodingFromBom), CancellationToken.None)); }
internal static async Task ApplyPpcParseJsonArray <TJ, TC>(this PullFuncStream data, IConsumer <TC> consumer, IDataAdapter <TJ, TC> adapter, JsonSerializer serializer, CancellationToken token, Encoding enc, bool detectEncodingFromBom, int bufferSize, int ppcBuffSize) { using var bc = ConcurrentBuffer.CreateBuffer <TJ>(ConcurrentBuffer.MinSize); using var localCts = new CancellationTokenSource(); using var combinedCts = CancellationTokenSource.CreateLinkedTokenSource(token, localCts.Token); await data.ApplyPpcParseJsonArray(consumer, adapter, serializer, combinedCts.Token, enc, detectEncodingFromBom, bufferSize, bc, localCts, ppcBuffSize).ConfigureAwait(false); }
internal static PullFuncStream ApplyByteCount(this PullFuncStream data, ByteCountStream bcs) { bcs.ResetWith(data.Readable, data.Dispose); return(new PullFuncStream(bcs, true)); }
private static PullFuncStream ApplyTransform(this PullFuncStream data, ICryptoTransform ct) { return(new PullFuncStream(data.Readable.CreateCryptoStream(ct, CryptoStreamMode.Read, data.Dispose), true)); }
private static PullFuncStream ApplyDecompression(this PullFuncStream data, bool gzip) { return(new PullFuncStream(data.Readable.CreateDecompressionStream(gzip, data.Dispose), true)); }