Skip to content

Commit d159c8f

Browse files
Remove usage of BitVector32 in routing key calculation (#1617)
Co-authored-by: Daniel Marbach <danielmarbach@users.noreply.github.com>
1 parent 4fa4026 commit d159c8f

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

src/NServiceBus.Transport.RabbitMQ/DelayedDelivery/DelayInfrastructure.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ namespace NServiceBus.Transport.RabbitMQ
44
{
55
using System;
66
using System.Collections.Generic;
7-
using System.Collections.Specialized;
87
using System.Runtime.CompilerServices;
98
using System.Threading;
109
using System.Threading.Tasks;
@@ -105,20 +104,17 @@ static void Action(Span<char> span, (int, string, nint) state)
105104
var (delayInSeconds, address, startingDelayLevelPtr) = state;
106105

107106
var startingDelayLevel = 0;
108-
var mask = BitVector32.CreateMask();
109-
110-
var bitVector = new BitVector32(delayInSeconds);
111107

112108
var index = 0;
113109
for (var level = MaxLevel; level >= 0; level--)
114110
{
115-
var flag = bitVector[mask << level];
116-
if (startingDelayLevel == 0 && flag)
111+
bool bitSet = ((delayInSeconds >> level) & 1) != 0;
112+
if (startingDelayLevel == 0 && bitSet)
117113
{
118114
startingDelayLevel = level;
119115
}
120116

121-
span[index++] = flag ? '1' : '0';
117+
span[index++] = bitSet ? '1' : '0';
122118
span[index++] = '.';
123119
}
124120

0 commit comments

Comments
 (0)