summaryrefslogtreecommitdiff
path: root/dotnet
diff options
context:
space:
mode:
Diffstat (limited to 'dotnet')
-rw-r--r--dotnet/client-010/client/transport/util/UUID.cs34
-rw-r--r--dotnet/client-010/test/transport/util/UUIDTest.cs10
2 files changed, 26 insertions, 18 deletions
diff --git a/dotnet/client-010/client/transport/util/UUID.cs b/dotnet/client-010/client/transport/util/UUID.cs
index 2cbbd460bc..07a3d267a5 100644
--- a/dotnet/client-010/client/transport/util/UUID.cs
+++ b/dotnet/client-010/client/transport/util/UUID.cs
@@ -26,9 +26,9 @@ namespace org.apache.qpid.transport.util
public class UUID
{
private long _mostSigBits;
-
private long _leastSigBits;
private static readonly Random _random = new Random();
+ private static readonly object _randomLock = new object();
public UUID(long mostSigBits, long leastSigBits)
@@ -49,7 +49,7 @@ namespace org.apache.qpid.transport.util
set { _leastSigBits = value; }
}
- private UUID(byte[] r)
+ internal UUID(byte[] r)
{
MostSignificantBits = 0;
LeastSignificantBits = 0;
@@ -59,27 +59,33 @@ namespace org.apache.qpid.transport.util
LeastSignificantBits = (LeastSignificantBits << 8) | (r[i] & 0xff);
}
- public static UUID randomUUID()
+ public static UUID RandomUuid()
{
byte[] randomBytes = new byte[16];
- _random.NextBytes(randomBytes);
- randomBytes[6] &= 0x0f;
- randomBytes[6] |= 0x40;
- randomBytes[8] &= 0x3f;
- randomBytes[8] |= 0x80;
+ lock (_randomLock)
+ {
+ _random.NextBytes(randomBytes);
+ }
+
+ randomBytes[6] &= 0x0f;
+ randomBytes[6] |= 0x40;
+ randomBytes[8] &= 0x3f;
+ randomBytes[8] |= 0x80;
+
return new UUID(randomBytes);
}
+
public override String ToString()
{
- return (digits(_mostSigBits >> 32, 8) + "-" +
- digits(_mostSigBits >> 16, 4) + "-" +
- digits(_mostSigBits, 4) + "-" +
- digits(_leastSigBits >> 48, 4) + "-" +
- digits(_leastSigBits, 12));
+ return (Digits(_mostSigBits >> 32, 8) + "-" +
+ Digits(_mostSigBits >> 16, 4) + "-" +
+ Digits(_mostSigBits, 4) + "-" +
+ Digits(_leastSigBits >> 48, 4) + "-" +
+ Digits(_leastSigBits, 12));
}
- private static String digits(long val, int digits)
+ private static String Digits(long val, int digits)
{
long hi = 1L << (digits * 4);
return Convert.ToString((hi | (val & (hi - 1))), 16);
diff --git a/dotnet/client-010/test/transport/util/UUIDTest.cs b/dotnet/client-010/test/transport/util/UUIDTest.cs
index c1d460c59f..41104f8873 100644
--- a/dotnet/client-010/test/transport/util/UUIDTest.cs
+++ b/dotnet/client-010/test/transport/util/UUIDTest.cs
@@ -28,20 +28,22 @@ namespace test.transport.util
public class UUIDTest
{
+
+
[Test]
public void createUUID()
{
- UUID uuid = UUID.randomUUID();
+ UUID uuid = UUID.RandomUuid();
String uuidStr = uuid.ToString();
Assert.IsNotNull(uuid);
- UUID uuid2 = UUID.randomUUID();
+ UUID uuid2 = UUID.RandomUuid();
Assert.AreNotSame(uuid, uuid2);
}
[Test]
public void ToString_should_override_and_not_hide_base()
{
- UUID uuid = UUID.randomUUID();
+ UUID uuid = UUID.RandomUuid();
string uuidStr = uuid.ToString();
string uuidConcat = "Test." + uuid;
@@ -52,7 +54,7 @@ namespace test.transport.util
[Test]
public void two_uuid_with_same_value_should_have_same_hash_code()
{
- UUID uuid = UUID.randomUUID();
+ UUID uuid = UUID.RandomUuid();
UUID uuid2 = new UUID(uuid.MostSignificantBits, uuid.LeastSignificantBits);
Assert.AreEqual(uuid, uuid2);