public IReadableChannel MakeReadableChannel(IReadableChannel channel, Func <IReadableChannel, IWritableChannel, Task> produce) { var newChannel = new MemoryPoolChannel(_pool); // TODO: Avoid closure newChannel.OnStartReading(() => { produce(channel, newChannel).ContinueWith(t => { }); }); return(newChannel); }
public IReadableChannel MakeReadableChannel(Stream stream) { if (!stream.CanRead) { throw new InvalidOperationException(); } var channel = new MemoryPoolChannel(_pool); channel.OnStartReading(() => { stream.CopyToAsync(channel).ContinueWith(task => { }); }); return(channel); }