Skip to content

Commit 8035ed9

Browse files
authored
Replace custom GetHashCode implementations with HashCode.Combine (#9059)
1 parent e033fbd commit 8035ed9

File tree

12 files changed

+20
-68
lines changed

12 files changed

+20
-68
lines changed

src/Orleans.Core/Runtime/RingRange.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ internal sealed class SingleRange : IRingRangeInternal, IEquatable<SingleRange>,
5555
{
5656
[Id(0)]
5757
private readonly uint begin;
58+
5859
[Id(1)]
5960
private readonly uint end;
6061

@@ -105,7 +106,7 @@ public long RangeSize()
105106

106107
public override bool Equals(object? obj) => Equals(obj as SingleRange);
107108

108-
public override int GetHashCode() => (int)(begin ^ end);
109+
public override int GetHashCode() => HashCode.Combine(GetType(), begin, end);
109110

110111
public override string ToString() => begin == 0 && end == 0 ? "<(0 0], Size=x100000000, %Ring=100%>" : $"{this}";
111112

@@ -175,7 +176,7 @@ public static class RangeFactory
175176
/// <summary>
176177
/// The ring size.
177178
/// </summary>
178-
public const long RING_SIZE = ((long)uint.MaxValue) + 1;
179+
public const long RING_SIZE = (long)uint.MaxValue + 1;
179180

180181
/// <summary>
181182
/// Represents an empty range.
@@ -240,6 +241,7 @@ internal sealed class GeneralMultiRange : IRingRangeInternal, ISpanFormattable
240241
{
241242
[Id(0)]
242243
private readonly List<SingleRange> ranges;
244+
243245
[Id(1)]
244246
private readonly long rangeSize;
245247

@@ -319,7 +321,7 @@ private static SingleRange GetEquallyDividedSubRange(SingleRange singleRange, in
319321
for (int i = 0; i < numSubRanges; i++)
320322
{
321323
// (Begin, End]
322-
uint end = (unchecked(start + portion));
324+
uint end = unchecked(start + portion);
323325
// I want it to overflow on purpose. It will do the right thing.
324326
if (remainder > 0)
325327
{
@@ -333,11 +335,11 @@ private static SingleRange GetEquallyDividedSubRange(SingleRange singleRange, in
333335
throw new ArgumentException(nameof(mySubRangeIndex));
334336
}
335337

336-
// Takes a range and devides it into numSubRanges equal ranges and returns the subrange at mySubRangeIndex.
338+
// Takes a range and divides it into numSubRanges equal ranges and returns the subrange at mySubRangeIndex.
337339
public static IRingRange GetEquallyDividedSubRange(IRingRange range, int numSubRanges, int mySubRangeIndex)
338340
{
339-
if (numSubRanges <= 0) throw new ArgumentException(nameof(numSubRanges));
340-
if ((uint)mySubRangeIndex >= (uint)numSubRanges) throw new ArgumentException(nameof(mySubRangeIndex));
341+
if (numSubRanges <= 0) throw new ArgumentOutOfRangeException(nameof(numSubRanges));
342+
if ((uint)mySubRangeIndex >= (uint)numSubRanges) throw new ArgumentOutOfRangeException(nameof(mySubRangeIndex));
341343

342344
if (numSubRanges == 1) return range;
343345

@@ -358,7 +360,7 @@ public static IRingRange GetEquallyDividedSubRange(IRingRange range, int numSubR
358360
return new GeneralMultiRange(singlesForThisIndex);
359361
}
360362

361-
default: throw new ArgumentException(nameof(range));
363+
default: throw new ArgumentOutOfRangeException(nameof(range));
362364
}
363365
}
364366
}

src/Orleans.Streaming/Common/EventSequenceToken.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,7 @@ public override int CompareTo(StreamSequenceToken other)
9696
}
9797

9898
/// <inheritdoc />
99-
public override int GetHashCode()
100-
{
101-
return (EventIndex * 397) ^ SequenceNumber.GetHashCode();
102-
}
99+
public override int GetHashCode() => HashCode.Combine(SequenceNumber, EventIndex);
103100

104101
/// <inheritdoc />
105102
public override string ToString()

src/Orleans.Streaming/Common/EventSequenceTokenV2.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,7 @@ public override int CompareTo(StreamSequenceToken other)
9696
}
9797

9898
/// <inheritdoc/>
99-
public override int GetHashCode()
100-
{
101-
// why 397?
102-
return (EventIndex * 397) ^ SequenceNumber.GetHashCode();
103-
}
99+
public override int GetHashCode() => HashCode.Combine(SequenceNumber, EventIndex);
104100

105101
/// <inheritdoc/>
106102
public override string ToString()

src/Orleans.Streaming/Core/StreamIdentity.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
using System;
32
using System.Collections.Generic;
43
using Orleans.Runtime;
@@ -42,12 +41,6 @@ public StreamIdentity(Guid streamGuid, string streamNamespace)
4241
public override bool Equals(object obj) => obj is StreamIdentity identity && this.Guid.Equals(identity.Guid) && this.Namespace == identity.Namespace;
4342

4443
/// <inheritdoc />
45-
public override int GetHashCode()
46-
{
47-
var hashCode = -1455462324;
48-
hashCode = hashCode * -1521134295 + this.Guid.GetHashCode();
49-
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(this.Namespace);
50-
return hashCode;
51-
}
44+
public override int GetHashCode() => HashCode.Combine(Guid, Namespace);
5245
}
5346
}

src/Orleans.Streaming/Internal/StreamHandshakeToken.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,7 @@ public override bool Equals(object obj)
3737
return Equals((StreamHandshakeToken)obj);
3838
}
3939

40-
public override int GetHashCode()
41-
{
42-
unchecked
43-
{
44-
return (GetType().GetHashCode() * 397) ^ (Token != null ? Token.GetHashCode() : 0);
45-
}
46-
}
40+
public override int GetHashCode() => HashCode.Combine(GetType(), Token);
4741
}
4842

4943
[Serializable]

src/Orleans.Streaming/Internal/StreamSubscriptionHandleImpl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ public async Task<StreamHandshakeToken> DeliverBatch(IBatchContainer batch, Stre
132132
{
133133
this.expectedToken = StreamHandshakeToken.CreateDeliveyToken(batch.SequenceToken);
134134
}
135+
135136
return null;
136137
}
137138

src/Orleans.Streaming/PubSub/PubSubPublisherState.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,7 @@ public bool Equals(QualifiedStreamId streamId, GrainId streamProducer)
5353
{
5454
return !left.Equals(right);
5555
}
56-
public override int GetHashCode()
57-
{
58-
// This code was auto-generated by ReSharper
59-
unchecked
60-
{
61-
return (Stream.GetHashCode() * 397) ^ (Producer != default ? Producer.GetHashCode() : 0);
62-
}
63-
}
56+
public override int GetHashCode() => HashCode.Combine(Stream, Producer);
6457

6558
public override string ToString()
6659
{

src/Orleans.Streaming/QueueId.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public int CompareTo(QueueId other)
8080
public override bool Equals(object? obj) => obj is QueueId queueId && Equals(queueId);
8181

8282
/// <inheritdoc/>
83-
public override int GetHashCode() => (int)queueId ^ (int)uniformHashCache ^ (queueNamePrefix?.GetHashCode() ?? 0);
83+
public override int GetHashCode() => HashCode.Combine(queueId, uniformHashCache, queueNamePrefix);
8484

8585
public static bool operator ==(QueueId left, QueueId right) => left.Equals(right);
8686

src/Orleans.Transactions.TestKit.Base/Grains/MultiStateTransactionalBitArrayGrain.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,7 @@ public override bool Equals(object obj)
3939
return Equals((BitArrayState) obj);
4040
}
4141

42-
public override int GetHashCode()
43-
{
44-
return (value != null ? value.GetHashCode() : 0);
45-
}
42+
public override int GetHashCode() => HashCode.Combine(value);
4643

4744
private static readonly int BitsInInt = sizeof(int) * 8;
4845

src/Orleans.Transactions/DistributedTM/ParticipantId.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,7 @@ public bool Equals(ParticipantId x, ParticipantId y)
4949
return string.CompareOrdinal(x.Name, y.Name) == 0 && Equals(x.Reference, y.Reference);
5050
}
5151

52-
public int GetHashCode(ParticipantId obj)
53-
{
54-
unchecked
55-
{
56-
var idHashCode = (obj.Name != null) ? obj.Name.GetHashCode() : 0;
57-
var referenceHashCode = (obj.Reference != null) ? obj.Reference.GetHashCode() : 0;
58-
return (idHashCode * 397) ^ (referenceHashCode);
59-
}
60-
}
52+
public int GetHashCode(ParticipantId obj) => HashCode.Combine(obj.Name, obj.Reference);
6153
}
6254
}
6355

0 commit comments

Comments
 (0)