1using System.Threading.Tasks;
6 internal class PendingChunkRecord : ChunkRecord
10 internal PendingChunkRecord()
15 public override Task DisposeAsync()
17 return Task.CompletedTask;
20 private abstract class ChunkEvent
22 public abstract Task Replay(ChunkRecord To);
25 private class ChunkReceivedEvent : ChunkEvent
29 public bool ConstantBuffer;
32 public override Task Replay(ChunkRecord To)
34 return To.ChunkReceived(this.Nr, this.Last, this.ConstantBuffer, this.Data);
38 private class ChunkFailEvent : ChunkEvent
40 public string Message;
42 public override Task Replay(ChunkRecord To)
44 return To.Fail(this.Message);
48 internal override Task<bool> ChunkReceived(
int Nr,
bool Last,
bool ConstantBuffer,
byte[] Data)
50 this.pending.Add(
new ChunkReceivedEvent()
54 ConstantBuffer = ConstantBuffer,
58 return Task.FromResult(
true);
61 internal override Task Fail(
string Message)
63 this.pending.Add(
new ChunkFailEvent()
68 return Task.CompletedTask;
71 internal async Task Replay(ChunkRecord To)
73 foreach (ChunkEvent E
in this.pending)
A chunked list is a linked list of chunks of objects of type T .