4545using System . Runtime . ExceptionServices ;
4646using System . Runtime . InteropServices ;
4747using RabbitMQ . Client . Exceptions ;
48- using RabbitMQ . Client . Framing ;
4948using RabbitMQ . Util ;
5049
5150namespace RabbitMQ . Client . Impl
@@ -73,7 +72,7 @@ internal override int WritePayload(Memory<byte> memory)
7372 NetworkOrderSerializer . WriteUInt16 ( memory . Span , _header . ProtocolClassId ) ;
7473 // write header (X bytes)
7574 int bytesWritten = _header . WriteTo ( memory . Slice ( 2 ) , ( ulong ) _bodyLength ) ;
76- return 2 + bytesWritten ;
75+ return bytesWritten + 2 ;
7776 }
7877 }
7978
@@ -115,8 +114,9 @@ internal override int GetMinimumPayloadBufferSize()
115114
116115 internal override int WritePayload ( Memory < byte > memory )
117116 {
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 ) ;
120120 var argWriter = new MethodArgumentWriter ( memory . Slice ( 4 ) ) ;
121121 _method . WriteArgumentsTo ( ref argWriter ) ;
122122 argWriter . Flush ( ) ;
@@ -141,21 +141,25 @@ internal override int WritePayload(Memory<byte> memory)
141141 }
142142 }
143143
144- abstract class OutboundFrame : Frame
144+ internal abstract class OutboundFrame
145145 {
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 )
148150 {
151+ Type = type ;
152+ Channel = channel ;
149153 }
150154
151155 internal void WriteTo ( Memory < byte > memory )
152156 {
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 ) ;
155160 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 ;
159163 }
160164
161165 internal abstract int WritePayload ( Memory < byte > memory ) ;
@@ -164,6 +168,11 @@ internal int GetMinimumBufferSize()
164168 {
165169 return 8 + GetMinimumPayloadBufferSize ( ) ;
166170 }
171+
172+ public override string ToString ( )
173+ {
174+ return $ "(type={ Type } , channel={ Channel } )";
175+ }
167176 }
168177
169178 internal readonly struct InboundFrame : IDisposable
@@ -304,47 +313,12 @@ public override string ToString()
304313 return $ "(type={ Type } , channel={ Channel } , { Payload . Length } bytes of payload)";
305314 }
306315 }
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
342318 {
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
349323 }
350324}
0 commit comments