protected override ContentRedirector ResolveDataRedirector(HttpRequestMetadata metadata) { ContentRedirector dataRedirector = null; if (metadata.Headers.ContainsName("Content-Length")) { var length = metadata.Headers.GetContentLength(); dataRedirector = new FixedSizeContentRedirector( this.Relay.StopSignal, this.SourceStream, this.SourceBuffer, this.DestinationStream, length); } return(dataRedirector); }
protected override ContentRedirector ResolveDataRedirector(HttpResponseMetadata metadata) { ContentRedirector dataRedirector = null; if (metadata.Headers.ContainsName("Content-Length")) { var length = metadata.Headers.GetContentLength(); dataRedirector = new FixedSizeContentRedirector( this.Relay.StopSignal, this.SourceStream, this.SourceBuffer, this.DestinationStream, length); } else if (metadata.Headers.ContainsName("Transfer-Encoding")) { var transferEncoding = metadata.Headers.GetTransferEncoding(); if (transferEncoding == HttpTransferEncoding.Chunked) { dataRedirector = new ChunkedContentRedirector( this.Relay.StopSignal, this.SourceStream, this.SourceBuffer, this.DestinationStream); } else { throw new NotImplementedException(); } } else { throw new NotImplementedException(); } return(dataRedirector); }