Skip to content

Commit c0aee19

Browse files
Stackalloc and marshal the delivery tag (#19857)
1 parent 184122b commit c0aee19

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

sdk/servicebus/Azure.Messaging.ServiceBus/src/Amqp/AmqpMessageConverter.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
using System.Collections.Generic;
77
using System.IO;
88
using System.Linq;
9+
using System.Runtime.InteropServices;
910
using System.Runtime.Serialization;
11+
using System.Text;
1012
using Azure.Core;
1113
using Azure.Core.Amqp;
1214
using Azure.Messaging.ServiceBus.Amqp.Framing;
@@ -360,9 +362,13 @@ public static ServiceBusReceivedMessage AmqpMessageToSBMessage(AmqpMessage amqpM
360362

361363
if (amqpMessage.DeliveryTag.Count == GuidSizeInBytes)
362364
{
363-
var guidBuffer = new byte[GuidSizeInBytes];
364-
Buffer.BlockCopy(amqpMessage.DeliveryTag.Array, amqpMessage.DeliveryTag.Offset, guidBuffer, 0, GuidSizeInBytes);
365-
sbMessage.LockTokenGuid = new Guid(guidBuffer);
365+
Span<byte> guidBytes = stackalloc byte[GuidSizeInBytes];
366+
amqpMessage.DeliveryTag.AsSpan().CopyTo(guidBytes);
367+
if (!MemoryMarshal.TryRead<Guid>(guidBytes, out var lockTokenGuid))
368+
{
369+
lockTokenGuid = new Guid(guidBytes.ToArray());
370+
}
371+
sbMessage.LockTokenGuid = lockTokenGuid;
366372
}
367373

368374
amqpMessage.Dispose();

0 commit comments

Comments
 (0)