@@ -25,8 +25,7 @@ namespace Elasticsearch.Net
2525 internal class RequestDataContent : HttpContent
2626 {
2727 private readonly RequestData _requestData ;
28- private readonly Func < PostData , CompleteTaskOnCloseStream , RequestDataContent , TransportContext , Task > _onStreamAvailable ;
29-
28+ private readonly Func < RequestData , CompleteTaskOnCloseStream , RequestDataContent , TransportContext , Task > _onStreamAvailable ;
3029
3130 public RequestDataContent ( RequestData requestData )
3231 {
@@ -35,14 +34,17 @@ public RequestDataContent(RequestData requestData)
3534 if ( requestData . HttpCompression )
3635 Headers . ContentEncoding . Add ( "gzip" ) ;
3736
38- Task OnStreamAvailable ( PostData data , Stream stream , HttpContent content , TransportContext context )
37+ Task OnStreamAvailable ( RequestData data , Stream stream , HttpContent content , TransportContext context )
3938 {
40- if ( _requestData . HttpCompression )
39+ if ( data . HttpCompression )
4140 stream = new GZipStream ( stream , CompressionMode . Compress , false ) ;
41+
4242 using ( stream )
43- data . Write ( stream , requestData . ConnectionSettings ) ;
43+ data . PostData . Write ( stream , data . ConnectionSettings ) ;
44+
4445 return Task . CompletedTask ;
4546 }
47+
4648 _onStreamAvailable = OnStreamAvailable ;
4749 }
4850 public RequestDataContent ( RequestData requestData , CancellationToken token )
@@ -52,13 +54,15 @@ public RequestDataContent(RequestData requestData, CancellationToken token)
5254 if ( requestData . HttpCompression )
5355 Headers . ContentEncoding . Add ( "gzip" ) ;
5456
55- async Task OnStreamAvailable ( PostData data , Stream stream , HttpContent content , TransportContext context )
57+ async Task OnStreamAvailable ( RequestData data , Stream stream , HttpContent content , TransportContext context )
5658 {
57- if ( _requestData . HttpCompression )
59+ if ( data . HttpCompression )
5860 stream = new GZipStream ( stream , CompressionMode . Compress , false ) ;
61+
5962 using ( stream )
60- await data . WriteAsync ( stream , requestData . ConnectionSettings , token ) . ConfigureAwait ( false ) ;
63+ await data . PostData . WriteAsync ( stream , data . ConnectionSettings , token ) . ConfigureAwait ( false ) ;
6164 }
65+
6266 _onStreamAvailable = OnStreamAvailable ;
6367 }
6468
@@ -73,14 +77,9 @@ async Task OnStreamAvailable(PostData data, Stream stream, HttpContent content,
7377 [ SuppressMessage ( "Microsoft.Design" , "CA1031:DoNotCatchGeneralExceptionTypes" , Justification = "Exception is passed as task result." ) ]
7478 protected override async Task SerializeToStreamAsync ( Stream stream , TransportContext context )
7579 {
76-
77- var data = _requestData . PostData ;
78- if ( data == null ) return ;
79-
8080 var serializeToStreamTask = new TaskCompletionSource < bool > ( ) ;
81-
8281 var wrappedStream = new CompleteTaskOnCloseStream ( stream , serializeToStreamTask ) ;
83- await _onStreamAvailable ( data , wrappedStream , this , context ) . ConfigureAwait ( false ) ;
82+ await _onStreamAvailable ( _requestData , wrappedStream , this , context ) . ConfigureAwait ( false ) ;
8483 await serializeToStreamTask . Task . ConfigureAwait ( false ) ;
8584 }
8685
@@ -113,7 +112,6 @@ protected override void Dispose(bool disposing)
113112 base . Dispose ( ) ;
114113 }
115114
116-
117115 public override void Close ( ) => _serializeToStreamTask . TrySetResult ( true ) ;
118116 }
119117
@@ -195,6 +193,8 @@ public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, As
195193 public override void EndWrite ( IAsyncResult asyncResult ) => _innerStream . EndWrite ( asyncResult ) ;
196194
197195 public override void WriteByte ( byte value ) => _innerStream . WriteByte ( value ) ;
196+
197+ public override void Close ( ) => _innerStream . Close ( ) ;
198198 }
199199 }
200200}
0 commit comments