@@ -140,9 +140,9 @@ private async Task<TResponse> SendRequestImpl<TRequest, TResponse>(TRequest requ
140
140
var requestId = _requestIdCounter . GetRequestId ( ) ;
141
141
var responseTask = _responseReader . GetResponseTask ( requestId ) ;
142
142
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 ,
146
146
new ArraySegment < byte > ( bodyBuffer , 0 , bodyBuffer . Length ) ) ;
147
147
148
148
try
@@ -175,11 +175,15 @@ private static string ToReadableString(byte[] bytes)
175
175
return string . Join ( " " , bytes . Select ( b => b . ToString ( "X2" ) ) ) ;
176
176
}
177
177
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 > (
179
184
TRequest request ,
180
185
RequestId requestId ,
181
- byte [ ] serializedRequest ,
182
- out long headerLength ) where TRequest : IRequest
186
+ byte [ ] serializedRequest ) where TRequest : IRequest
183
187
{
184
188
var packetSizeBuffer = new byte [ Constants . PacketSizeBufferSize + Constants . MaxHeaderLength ] ;
185
189
var stream = new MemoryStream ( packetSizeBuffer ) ;
@@ -188,11 +192,12 @@ private byte[] CreateAndSerializeBuffer<TRequest>(
188
192
stream . Seek ( Constants . PacketSizeBufferSize , SeekOrigin . Begin ) ;
189
193
MsgPackSerializer . Serialize ( requestHeader , stream , _msgPackContext ) ;
190
194
191
- headerLength = stream . Position - Constants . PacketSizeBufferSize ;
195
+ var lengthAndHeaderLengthByteCount = ( int ) stream . Position ;
196
+ var headerLength = lengthAndHeaderLengthByteCount - Constants . PacketSizeBufferSize ;
192
197
var packetLength = new PacketSize ( ( uint ) ( headerLength + serializedRequest . Length ) ) ;
193
198
stream . Seek ( 0 , SeekOrigin . Begin ) ;
194
199
MsgPackSerializer . Serialize ( packetLength , stream , _msgPackContext ) ;
195
- return packetSizeBuffer ;
200
+ return new ArraySegment < byte > ( packetSizeBuffer , 0 , lengthAndHeaderLengthByteCount ) ;
196
201
}
197
202
}
198
203
}
0 commit comments