1
1
using System ;
2
2
using System . Collections . Generic ;
3
3
using System . IO ;
4
+ using System . IO . Pipelines ;
4
5
using System . Text ;
5
6
using System . Threading . Tasks ;
6
7
using Microsoft . AspNetCore . Http . Features ;
@@ -13,6 +14,7 @@ public sealed class ReusableHttpResponse : HttpResponse
13
14
// Lambdas hoisted to static readonly fields to improve inlining https://github.com/dotnet/roslyn/issues/13624
14
15
private readonly static Func < IFeatureCollection , IHttpResponseFeature > _nullResponseFeature = f => null ;
15
16
private readonly static Func < IFeatureCollection , IResponseCookiesFeature > _newResponseCookiesFeature = f => new ResponseCookiesFeature ( f ) ;
17
+ private readonly static Func < HttpContext , IResponseBodyPipeFeature > _newResponseBodyPipeFeature = context => new ResponseBodyPipeFeature ( context ) ;
16
18
17
19
private HttpContext _context ;
18
20
private FeatureReferences < FeatureInterfaces > _features ;
@@ -39,7 +41,8 @@ public void Uninitialize()
39
41
40
42
private IResponseCookiesFeature ResponseCookiesFeature =>
41
43
_features . Fetch ( ref _features . Cache . Cookies , _newResponseCookiesFeature ) ;
42
-
44
+ private IResponseBodyPipeFeature ResponseBodyPipeFeature =>
45
+ _features . Fetch ( ref _features . Cache . BodyPipe , this . HttpContext , _newResponseBodyPipeFeature ) ;
43
46
44
47
public override HttpContext HttpContext { get { return _context ; } }
45
48
@@ -90,6 +93,12 @@ public override IResponseCookies Cookies
90
93
get { return ResponseCookiesFeature . Cookies ; }
91
94
}
92
95
96
+ public override PipeWriter BodyPipe
97
+ {
98
+ get { return ResponseBodyPipeFeature . ResponseBodyPipe ; }
99
+ set { ResponseBodyPipeFeature . ResponseBodyPipe = value ; }
100
+ }
101
+
93
102
public override bool HasStarted
94
103
{
95
104
get { return HttpResponseFeature . HasStarted ; }
@@ -133,6 +142,7 @@ struct FeatureInterfaces
133
142
{
134
143
public IHttpResponseFeature Response ;
135
144
public IResponseCookiesFeature Cookies ;
145
+ public IResponseBodyPipeFeature BodyPipe ;
136
146
}
137
147
}
138
148
}
0 commit comments