@@ -140,9 +140,9 @@ private async Task<TResponse> SendRequestImpl<TRequest, TResponse>(TRequest requ
140140 var requestId = _requestIdCounter . GetRequestId ( ) ;
141141 var responseTask = _responseReader . GetResponseTask ( requestId ) ;
142142
143- var headerBuffer = CreateAndSerializeBuffer ( request , requestId , bodyBuffer , out var headerLength ) ;
144- await _requestWriter . Write (
145- new ArraySegment < byte > ( headerBuffer , 0 , Constants . PacketSizeBufferSize + ( int ) headerLength ) ,
143+ var headerBuffer = CreateAndSerializeHeader ( request , requestId , bodyBuffer ) ;
144+ _requestWriter . Write (
145+ headerBuffer ,
146146 new ArraySegment < byte > ( bodyBuffer , 0 , bodyBuffer . Length ) ) ;
147147
148148 try
@@ -175,11 +175,15 @@ private static string ToReadableString(byte[] bytes)
175175 return string . Join ( " " , bytes . Select ( b => b . ToString ( "X2" ) ) ) ;
176176 }
177177
178- private byte [ ] CreateAndSerializeBuffer < TRequest > (
178+ private static string ToReadableString ( ArraySegment < byte > bytes )
179+ {
180+ return string . Join ( " " , bytes . Select ( b => b . ToString ( "X2" ) ) ) ;
181+ }
182+
183+ private ArraySegment < byte > CreateAndSerializeHeader < TRequest > (
179184 TRequest request ,
180185 RequestId requestId ,
181- byte [ ] serializedRequest ,
182- out long headerLength ) where TRequest : IRequest
186+ byte [ ] serializedRequest ) where TRequest : IRequest
183187 {
184188 var packetSizeBuffer = new byte [ Constants . PacketSizeBufferSize + Constants . MaxHeaderLength ] ;
185189 var stream = new MemoryStream ( packetSizeBuffer ) ;
@@ -188,11 +192,12 @@ private byte[] CreateAndSerializeBuffer<TRequest>(
188192 stream . Seek ( Constants . PacketSizeBufferSize , SeekOrigin . Begin ) ;
189193 MsgPackSerializer . Serialize ( requestHeader , stream , _msgPackContext ) ;
190194
191- headerLength = stream . Position - Constants . PacketSizeBufferSize ;
195+ var lengthAndHeaderLengthByteCount = ( int ) stream . Position ;
196+ var headerLength = lengthAndHeaderLengthByteCount - Constants . PacketSizeBufferSize ;
192197 var packetLength = new PacketSize ( ( uint ) ( headerLength + serializedRequest . Length ) ) ;
193198 stream . Seek ( 0 , SeekOrigin . Begin ) ;
194199 MsgPackSerializer . Serialize ( packetLength , stream , _msgPackContext ) ;
195- return packetSizeBuffer ;
200+ return new ArraySegment < byte > ( packetSizeBuffer , 0 , lengthAndHeaderLengthByteCount ) ;
196201 }
197202 }
198203}
0 commit comments