45
45
using System . Runtime . ExceptionServices ;
46
46
using System . Runtime . InteropServices ;
47
47
using RabbitMQ . Client . Exceptions ;
48
- using RabbitMQ . Client . Framing ;
49
48
using RabbitMQ . Util ;
50
49
51
50
namespace RabbitMQ . Client . Impl
@@ -73,7 +72,7 @@ internal override int WritePayload(Memory<byte> memory)
73
72
NetworkOrderSerializer . WriteUInt16 ( memory . Span , _header . ProtocolClassId ) ;
74
73
// write header (X bytes)
75
74
int bytesWritten = _header . WriteTo ( memory . Slice ( 2 ) , ( ulong ) _bodyLength ) ;
76
- return 2 + bytesWritten ;
75
+ return bytesWritten + 2 ;
77
76
}
78
77
}
79
78
@@ -115,8 +114,9 @@ internal override int GetMinimumPayloadBufferSize()
115
114
116
115
internal override int WritePayload ( Memory < byte > memory )
117
116
{
118
- NetworkOrderSerializer . WriteUInt16 ( memory . Span , _method . ProtocolClassId ) ;
119
- NetworkOrderSerializer . WriteUInt16 ( memory . Slice ( 2 ) . Span , _method . ProtocolMethodId ) ;
117
+ var span = memory . Span ;
118
+ NetworkOrderSerializer . WriteUInt16 ( span , _method . ProtocolClassId ) ;
119
+ NetworkOrderSerializer . WriteUInt16 ( span . Slice ( 2 ) , _method . ProtocolMethodId ) ;
120
120
var argWriter = new MethodArgumentWriter ( memory . Slice ( 4 ) ) ;
121
121
_method . WriteArgumentsTo ( ref argWriter ) ;
122
122
argWriter . Flush ( ) ;
@@ -141,21 +141,25 @@ internal override int WritePayload(Memory<byte> memory)
141
141
}
142
142
}
143
143
144
- abstract class OutboundFrame : Frame
144
+ internal abstract class OutboundFrame
145
145
{
146
- public int ByteCount { get ; private set ; } = 0 ;
147
- public OutboundFrame ( FrameType type , int channel ) : base ( type , channel )
146
+ public int Channel { get ; }
147
+ public FrameType Type { get ; }
148
+
149
+ protected OutboundFrame ( FrameType type , int channel )
148
150
{
151
+ Type = type ;
152
+ Channel = channel ;
149
153
}
150
154
151
155
internal void WriteTo ( Memory < byte > memory )
152
156
{
153
- memory . Span [ 0 ] = ( byte ) Type ;
154
- NetworkOrderSerializer . WriteUInt16 ( memory . Slice ( 1 ) . Span , ( ushort ) Channel ) ;
157
+ var span = memory . Span ;
158
+ span [ 0 ] = ( byte ) Type ;
159
+ NetworkOrderSerializer . WriteUInt16 ( span . Slice ( 1 ) , ( ushort ) Channel ) ;
155
160
int bytesWritten = WritePayload ( memory . Slice ( 7 ) ) ;
156
- NetworkOrderSerializer . WriteUInt32 ( memory . Slice ( 3 ) . Span , ( uint ) bytesWritten ) ;
157
- memory . Span [ bytesWritten + 7 ] = Constants . FrameEnd ;
158
- ByteCount = bytesWritten + 8 ;
161
+ NetworkOrderSerializer . WriteUInt32 ( span . Slice ( 3 ) , ( uint ) bytesWritten ) ;
162
+ span [ bytesWritten + 7 ] = Constants . FrameEnd ;
159
163
}
160
164
161
165
internal abstract int WritePayload ( Memory < byte > memory ) ;
@@ -164,6 +168,11 @@ internal int GetMinimumBufferSize()
164
168
{
165
169
return 8 + GetMinimumPayloadBufferSize ( ) ;
166
170
}
171
+
172
+ public override string ToString ( )
173
+ {
174
+ return $ "(type={ Type } , channel={ Channel } )";
175
+ }
167
176
}
168
177
169
178
internal readonly struct InboundFrame : IDisposable
@@ -304,47 +313,12 @@ public override string ToString()
304
313
return $ "(type={ Type } , channel={ Channel } , { Payload . Length } bytes of payload)";
305
314
}
306
315
}
307
-
308
- class Frame
309
- {
310
- public Frame ( FrameType type , int channel )
311
- {
312
- Type = type ;
313
- Channel = channel ;
314
- Payload = null ;
315
- }
316
-
317
- public Frame ( FrameType type , int channel , ReadOnlyMemory < byte > payload )
318
- {
319
- Type = type ;
320
- Channel = channel ;
321
- Payload = payload ;
322
- }
323
-
324
- public int Channel { get ; private set ; }
325
-
326
- public ReadOnlyMemory < byte > Payload { get ; private set ; }
327
-
328
- public FrameType Type { get ; private set ; }
329
-
330
- public override string ToString ( )
331
- {
332
- return string . Format ( "(type={0}, channel={1}, {2} bytes of payload)" ,
333
- Type ,
334
- Channel ,
335
- Payload . Length . ToString ( ) ) ;
336
- }
337
-
338
-
339
- }
340
-
341
- enum FrameType : int
316
+
317
+ internal enum FrameType : int
342
318
{
343
- FrameMethod = 1 ,
344
- FrameHeader = 2 ,
345
- FrameBody = 3 ,
346
- FrameHeartbeat = 8 ,
347
- FrameEnd = 206 ,
348
- FrameMinSize = 4096
319
+ FrameMethod = Constants . FrameMethod ,
320
+ FrameHeader = Constants . FrameHeader ,
321
+ FrameBody = Constants . FrameBody ,
322
+ FrameHeartbeat = Constants . FrameHeartbeat
349
323
}
350
324
}
0 commit comments