33
44using System ;
55using System . IO ;
6+ using System . IO . Pipelines ;
67using System . Threading . Tasks ;
78using Microsoft . AspNetCore . Http . Features ;
89using Microsoft . Net . Http . Headers ;
@@ -14,6 +15,7 @@ public class DefaultHttpResponse : HttpResponse
1415 // Lambdas hoisted to static readonly fields to improve inlining https://github.com/dotnet/roslyn/issues/13624
1516 private readonly static Func < IFeatureCollection , IHttpResponseFeature > _nullResponseFeature = f => null ;
1617 private readonly static Func < IFeatureCollection , IResponseCookiesFeature > _newResponseCookiesFeature = f => new ResponseCookiesFeature ( f ) ;
18+ private readonly static Func < HttpContext , IResponseBodyPipeFeature > _newResponseBodyPipeFeature = context => new ResponseBodyPipeFeature ( context ) ;
1719
1820 private HttpContext _context ;
1921 private FeatureReferences < FeatureInterfaces > _features ;
@@ -41,6 +43,8 @@ public virtual void Uninitialize()
4143 private IResponseCookiesFeature ResponseCookiesFeature =>
4244 _features . Fetch ( ref _features . Cache . Cookies , _newResponseCookiesFeature ) ;
4345
46+ private IResponseBodyPipeFeature ResponseBodyPipeFeature =>
47+ _features . Fetch ( ref _features . Cache . BodyPipe , this . HttpContext , _newResponseBodyPipeFeature ) ;
4448
4549 public override HttpContext HttpContext { get { return _context ; } }
4650
@@ -96,6 +100,12 @@ public override bool HasStarted
96100 get { return HttpResponseFeature . HasStarted ; }
97101 }
98102
103+ public override PipeWriter BodyPipe
104+ {
105+ get { return ResponseBodyPipeFeature . ResponseBodyPipe ; }
106+ set { ResponseBodyPipeFeature . ResponseBodyPipe = value ; }
107+ }
108+
99109 public override void OnStarting ( Func < object , Task > callback , object state )
100110 {
101111 if ( callback == null )
@@ -134,6 +144,7 @@ struct FeatureInterfaces
134144 {
135145 public IHttpResponseFeature Response ;
136146 public IResponseCookiesFeature Cookies ;
147+ public IResponseBodyPipeFeature BodyPipe ;
137148 }
138149 }
139150}
0 commit comments