Skip to content

Commit 0a6a6e9

Browse files
committed
implement WriteArgumentsTo(Span)
1 parent 68edfa4 commit 0a6a6e9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+634
-6
lines changed

projects/RabbitMQ.Client/client/framing/BasicAck.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
33+
using System.Buffers.Binary;
3234
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3336

3437
namespace RabbitMQ.Client.Framing.Impl
3538
{
@@ -65,6 +68,18 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6568
writer.EndBits();
6669
}
6770

71+
public override int WriteArgumentsTo(Span<byte> span)
72+
{
73+
int offset = WireFormatting.WriteLonglong(span, _deliveryTag);
74+
return offset + WireFormatting.WriteBits(span.Slice(offset), _multiple);
75+
}
76+
77+
public void WriteArgumentsToSpan(Span<byte> span)
78+
{
79+
BinaryPrimitives.WriteUInt64BigEndian(span, _deliveryTag);
80+
span[8] = _multiple ? (byte) 1 : (byte) 0;
81+
}
82+
6883
public override int GetRequiredBufferSize()
6984
{
7085
return 8 + 1;

projects/RabbitMQ.Client/client/framing/BasicCancel.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Text;
3334
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3436

3537
namespace RabbitMQ.Client.Framing.Impl
3638
{
@@ -66,6 +68,12 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6668
writer.EndBits();
6769
}
6870

71+
public override int WriteArgumentsTo(Span<byte> span)
72+
{
73+
int offset = WireFormatting.WriteShortstr(span, _consumerTag);
74+
return offset + WireFormatting.WriteBits(span.Slice(offset), _nowait);
75+
}
76+
6977
public override int GetRequiredBufferSize()
7078
{
7179
int bufferSize = 1 + 1; // bytes for length of _consumerTag, bit fields

projects/RabbitMQ.Client/client/framing/BasicCancelOk.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Text;
3334
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3436

3537
namespace RabbitMQ.Client.Framing.Impl
3638
{
@@ -61,6 +63,11 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6163
writer.WriteShortstr(_consumerTag);
6264
}
6365

66+
public override int WriteArgumentsTo(Span<byte> span)
67+
{
68+
return WireFormatting.WriteShortstr(span, _consumerTag);
69+
}
70+
6471
public override int GetRequiredBufferSize()
6572
{
6673
int bufferSize = 1; // bytes for length of _consumerTag

projects/RabbitMQ.Client/client/framing/BasicConsume.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Collections.Generic;
3334
using System.Text;
3435
using RabbitMQ.Client.client.framing;
@@ -92,6 +93,15 @@ public override void WriteArgumentsTo(ref MethodArgumentWriter writer)
9293
writer.WriteTable(_arguments);
9394
}
9495

96+
public override int WriteArgumentsTo(Span<byte> span)
97+
{
98+
int offset = WireFormatting.WriteShort(span, _reserved1);
99+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _queue);
100+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _consumerTag);
101+
offset += WireFormatting.WriteBits(span.Slice(offset), _noLocal, _noAck, _exclusive, _nowait);
102+
return offset + WireFormatting.WriteTable(span.Slice(offset), _arguments);
103+
}
104+
95105
public override int GetRequiredBufferSize()
96106
{
97107
int bufferSize = 2 + 1 + 1 + 1; // bytes for _reserved1, length of _queue, length of _consumerTag, bit fields

projects/RabbitMQ.Client/client/framing/BasicConsumeOk.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Text;
3334
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3436

3537
namespace RabbitMQ.Client.Framing.Impl
3638
{
@@ -61,6 +63,11 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6163
writer.WriteShortstr(_consumerTag);
6264
}
6365

66+
public override int WriteArgumentsTo(Span<byte> span)
67+
{
68+
return WireFormatting.WriteShortstr(span, _consumerTag);
69+
}
70+
6471
public override int GetRequiredBufferSize()
6572
{
6673
int bufferSize = 1; // bytes for length of _consumerTag

projects/RabbitMQ.Client/client/framing/BasicDeliver.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
33+
using System.Buffers.Binary;
3234
using System.Text;
3335
using RabbitMQ.Client.client.framing;
36+
using RabbitMQ.Client.Impl;
3437

3538
namespace RabbitMQ.Client.Framing.Impl
3639
{
@@ -78,6 +81,24 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
7881
writer.WriteShortstr(_routingKey);
7982
}
8083

84+
public override int WriteArgumentsTo(Span<byte> span)
85+
{
86+
int offset = WireFormatting.WriteShortstr(span, _consumerTag);
87+
offset += WireFormatting.WriteLonglong(span.Slice(offset), _deliveryTag);
88+
offset += WireFormatting.WriteBits(span.Slice(offset), _redelivered);
89+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _exchange);
90+
return offset + WireFormatting.WriteShortstr(span.Slice(offset), _routingKey);
91+
}
92+
93+
public void WriteArgumentsToSpan(Span<byte> span)
94+
{
95+
WireFormatting.WriteShortstr(ref span, _consumerTag);
96+
WireFormatting.WriteLonglong(ref span, _deliveryTag);
97+
WireFormatting.WriteBits(ref span, _redelivered);
98+
WireFormatting.WriteShortstr(ref span, _exchange);
99+
WireFormatting.WriteShortstr(ref span, _routingKey);
100+
}
101+
81102
public override int GetRequiredBufferSize()
82103
{
83104
int bufferSize = 1 + 8 + 1 + 1 + 1; // bytes for length of _consumerTag, _deliveryTag, bit fields, length of _exchange, length of _routingKey

projects/RabbitMQ.Client/client/framing/BasicGet.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Text;
3334
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3436

3537
namespace RabbitMQ.Client.Framing.Impl
3638
{
@@ -70,6 +72,13 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
7072
writer.EndBits();
7173
}
7274

75+
public override int WriteArgumentsTo(Span<byte> span)
76+
{
77+
int offset = WireFormatting.WriteShort(span, _reserved1);
78+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _queue);
79+
return offset + WireFormatting.WriteBits(span.Slice(offset), _noAck);
80+
}
81+
7382
public override int GetRequiredBufferSize()
7483
{
7584
int bufferSize = 2 + 1 + 1; // bytes for _reserved1, length of _queue, bit fields

projects/RabbitMQ.Client/client/framing/BasicGetEmpty.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Text;
3334
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3436

3537
namespace RabbitMQ.Client.Framing.Impl
3638
{
@@ -61,6 +63,11 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6163
writer.WriteShortstr(_reserved1);
6264
}
6365

66+
public override int WriteArgumentsTo(Span<byte> span)
67+
{
68+
return WireFormatting.WriteShortstr(span, _reserved1);
69+
}
70+
6471
public override int GetRequiredBufferSize()
6572
{
6673
int bufferSize = 1; // bytes for length of _reserved1

projects/RabbitMQ.Client/client/framing/BasicGetOk.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Text;
3334
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3436

3537
namespace RabbitMQ.Client.Framing.Impl
3638
{
@@ -78,6 +80,15 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
7880
writer.WriteLong(_messageCount);
7981
}
8082

83+
public override int WriteArgumentsTo(Span<byte> span)
84+
{
85+
int offset = WireFormatting.WriteLonglong(span, _deliveryTag);
86+
offset += WireFormatting.WriteBits(span.Slice(offset), _redelivered);
87+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _exchange);
88+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _routingKey);
89+
return offset + WireFormatting.WriteLong(span.Slice(offset), _messageCount);
90+
}
91+
8192
public override int GetRequiredBufferSize()
8293
{
8394
int bufferSize = 8 + 1 + 1 + 1 + 4; // bytes for _deliveryTag, bit fields, length of _exchange, length of _routingKey, _messageCount

projects/RabbitMQ.Client/client/framing/BasicNack.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using RabbitMQ.Client.client.framing;
34+
using RabbitMQ.Client.Impl;
3335

3436
namespace RabbitMQ.Client.Framing.Impl
3537
{
@@ -69,6 +71,12 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6971
writer.EndBits();
7072
}
7173

74+
public override int WriteArgumentsTo(Span<byte> span)
75+
{
76+
int offset = WireFormatting.WriteLonglong(span, _deliveryTag);
77+
return offset + WireFormatting.WriteBits(span.Slice(offset), _multiple, _requeue);
78+
}
79+
7280
public override int GetRequiredBufferSize()
7381
{
7482
return 8 + 1; // bytes for _deliveryTag, bit fields

projects/RabbitMQ.Client/client/framing/BasicPublish.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using System.Text;
3334
using RabbitMQ.Client.client.framing;
35+
using RabbitMQ.Client.Impl;
3436

3537
namespace RabbitMQ.Client.Framing.Impl
3638
{
@@ -78,6 +80,14 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
7880
writer.EndBits();
7981
}
8082

83+
public override int WriteArgumentsTo(Span<byte> span)
84+
{
85+
int offset = WireFormatting.WriteShort(span, _reserved1);
86+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _exchange);
87+
offset += WireFormatting.WriteShortstr(span.Slice(offset), _routingKey);
88+
return offset + WireFormatting.WriteBits(span.Slice(offset), _mandatory, _immediate);
89+
}
90+
8191
public override int GetRequiredBufferSize()
8292
{
8393
int bufferSize = 2 + 1 + 1 + 1; // bytes for _reserved1, length of _exchange, length of _routingKey, bit fields

projects/RabbitMQ.Client/client/framing/BasicQos.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using RabbitMQ.Client.client.framing;
34+
using RabbitMQ.Client.Impl;
3335

3436
namespace RabbitMQ.Client.Framing.Impl
3537
{
@@ -69,6 +71,13 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6971
writer.EndBits();
7072
}
7173

74+
public override int WriteArgumentsTo(Span<byte> span)
75+
{
76+
int offset = WireFormatting.WriteLong(span, _prefetchSize);
77+
offset += WireFormatting.WriteShort(span.Slice(offset), _prefetchCount);
78+
return offset + WireFormatting.WriteBits(span.Slice(offset), _global);
79+
}
80+
7281
public override int GetRequiredBufferSize()
7382
{
7483
return 4 + 2 + 1; // bytes for _prefetchSize, _prefetchCount, bit fields

projects/RabbitMQ.Client/client/framing/BasicQosOk.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using RabbitMQ.Client.client.framing;
3334

3435
namespace RabbitMQ.Client.Framing.Impl
@@ -51,6 +52,11 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
5152
{
5253
}
5354

55+
public override int WriteArgumentsTo(Span<byte> span)
56+
{
57+
return 0;
58+
}
59+
5460
public override int GetRequiredBufferSize()
5561
{
5662
return 0;

projects/RabbitMQ.Client/client/framing/BasicRecover.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using RabbitMQ.Client.client.framing;
34+
using RabbitMQ.Client.Impl;
3335

3436
namespace RabbitMQ.Client.Framing.Impl
3537
{
@@ -61,6 +63,11 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6163
writer.EndBits();
6264
}
6365

66+
public override int WriteArgumentsTo(Span<byte> span)
67+
{
68+
return WireFormatting.WriteBits(span, _requeue);
69+
}
70+
6471
public override int GetRequiredBufferSize()
6572
{
6673
return 1; // bytes for bit fields

projects/RabbitMQ.Client/client/framing/BasicRecoverAsync.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using RabbitMQ.Client.client.framing;
34+
using RabbitMQ.Client.Impl;
3335

3436
namespace RabbitMQ.Client.Framing.Impl
3537
{
@@ -61,6 +63,11 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
6163
writer.EndBits();
6264
}
6365

66+
public override int WriteArgumentsTo(Span<byte> span)
67+
{
68+
return WireFormatting.WriteBits(span, _requeue);
69+
}
70+
6471
public override int GetRequiredBufferSize()
6572
{
6673
return 1; // bytes for bit fields

projects/RabbitMQ.Client/client/framing/BasicRecoverOk.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
3030
//---------------------------------------------------------------------------
3131

32+
using System;
3233
using RabbitMQ.Client.client.framing;
3334

3435
namespace RabbitMQ.Client.Framing.Impl
@@ -51,6 +52,11 @@ public override void WriteArgumentsTo(ref Client.Impl.MethodArgumentWriter write
5152
{
5253
}
5354

55+
public override int WriteArgumentsTo(Span<byte> span)
56+
{
57+
return 0;
58+
}
59+
5460
public override int GetRequiredBufferSize()
5561
{
5662
return 0;

0 commit comments

Comments
 (0)