3
3
4
4
using System ;
5
5
using System . IO ;
6
+ using System . IO . Pipelines ;
6
7
using System . Threading . Tasks ;
7
8
using Microsoft . AspNetCore . Http . Features ;
8
9
using Microsoft . Net . Http . Headers ;
@@ -14,6 +15,7 @@ public class DefaultHttpResponse : HttpResponse
14
15
// Lambdas hoisted to static readonly fields to improve inlining https://github.com/dotnet/roslyn/issues/13624
15
16
private readonly static Func < IFeatureCollection , IHttpResponseFeature > _nullResponseFeature = f => null ;
16
17
private readonly static Func < IFeatureCollection , IResponseCookiesFeature > _newResponseCookiesFeature = f => new ResponseCookiesFeature ( f ) ;
18
+ private readonly static Func < HttpContext , IResponseBodyPipeFeature > _newResponseBodyPipeFeature = context => new ResponseBodyPipeFeature ( context ) ;
17
19
18
20
private HttpContext _context ;
19
21
private FeatureReferences < FeatureInterfaces > _features ;
@@ -41,6 +43,8 @@ public virtual void Uninitialize()
41
43
private IResponseCookiesFeature ResponseCookiesFeature =>
42
44
_features . Fetch ( ref _features . Cache . Cookies , _newResponseCookiesFeature ) ;
43
45
46
+ private IResponseBodyPipeFeature ResponseBodyPipeFeature =>
47
+ _features . Fetch ( ref _features . Cache . BodyPipe , this . HttpContext , _newResponseBodyPipeFeature ) ;
44
48
45
49
public override HttpContext HttpContext { get { return _context ; } }
46
50
@@ -96,6 +100,12 @@ public override bool HasStarted
96
100
get { return HttpResponseFeature . HasStarted ; }
97
101
}
98
102
103
+ public override PipeWriter BodyPipe
104
+ {
105
+ get { return ResponseBodyPipeFeature . ResponseBodyPipe ; }
106
+ set { ResponseBodyPipeFeature . ResponseBodyPipe = value ; }
107
+ }
108
+
99
109
public override void OnStarting ( Func < object , Task > callback , object state )
100
110
{
101
111
if ( callback == null )
@@ -134,6 +144,7 @@ struct FeatureInterfaces
134
144
{
135
145
public IHttpResponseFeature Response ;
136
146
public IResponseCookiesFeature Cookies ;
147
+ public IResponseBodyPipeFeature BodyPipe ;
137
148
}
138
149
}
139
150
}
0 commit comments