@@ -92,7 +92,7 @@ public OldestChanged(UniqueAddress oldest)
92
92
93
93
#endregion
94
94
95
- private readonly MemberAgeOrdering _memberAgeComparer ;
95
+ private readonly IComparer < Member > _memberAgeComparer ;
96
96
private readonly CoordinatedShutdown _coordShutdown = CoordinatedShutdown . Get ( Context . System ) ;
97
97
98
98
/// <summary>
@@ -103,9 +103,7 @@ public OldestChanged(UniqueAddress oldest)
103
103
public OldestChangedBuffer ( string role , bool considerAppVersion )
104
104
{
105
105
_role = role ;
106
- _memberAgeComparer = considerAppVersion
107
- ? MemberAgeOrdering . DescendingWithAppVersion
108
- : MemberAgeOrdering . Descending ;
106
+ _memberAgeComparer = Member . AgeOrdering ;
109
107
_membersByAge = ImmutableSortedSet < Member > . Empty . WithComparer ( _memberAgeComparer ) ;
110
108
111
109
SetupCoordinatedShutdown ( ) ;
@@ -147,8 +145,7 @@ private void TrackChanges(Action block)
147
145
var before = _membersByAge . FirstOrDefault ( ) ;
148
146
block ( ) ;
149
147
var after = _membersByAge . FirstOrDefault ( ) ;
150
-
151
- // todo: fix neq comparison
148
+
152
149
if ( ! Equals ( before , after ) )
153
150
_changes = _changes . Enqueue ( new OldestChanged ( after ? . UniqueAddress ) ) ;
154
151
}
@@ -221,21 +218,33 @@ protected override void PostStop()
221
218
/// <inheritdoc cref="UntypedActor.OnReceive"/>
222
219
protected override void OnReceive ( object message )
223
220
{
224
- if ( message is ClusterEvent . CurrentClusterState state ) HandleInitial ( state ) ;
225
- else if ( message is ClusterEvent . MemberUp up ) Add ( up . Member ) ;
226
- else if ( message is ClusterEvent . MemberRemoved removed ) Remove ( removed . Member ) ;
227
- else if ( message is ClusterEvent . MemberExited exited && exited . Member . UniqueAddress != _cluster . SelfUniqueAddress )
228
- Remove ( exited . Member ) ;
229
- else if ( message is SelfExiting )
221
+ switch ( message )
230
222
{
231
- Remove ( _cluster . ReadView . Self ) ;
232
- Sender . Tell ( Done . Instance ) ; // reply to ask
233
- }
234
- else if ( message is GetNext && _changes . IsEmpty ) Context . BecomeStacked ( OnDeliverNext ) ;
235
- else if ( message is GetNext ) SendFirstChange ( ) ;
236
- else
237
- {
238
- Unhandled ( message ) ;
223
+ case ClusterEvent . CurrentClusterState state :
224
+ HandleInitial ( state ) ;
225
+ break ;
226
+ case ClusterEvent . MemberUp up :
227
+ Add ( up . Member ) ;
228
+ break ;
229
+ case ClusterEvent . MemberRemoved removed :
230
+ Remove ( removed . Member ) ;
231
+ break ;
232
+ case ClusterEvent . MemberExited exited when exited . Member . UniqueAddress != _cluster . SelfUniqueAddress :
233
+ Remove ( exited . Member ) ;
234
+ break ;
235
+ case SelfExiting :
236
+ Remove ( _cluster . ReadView . Self ) ;
237
+ Sender . Tell ( Done . Instance ) ; // reply to ask
238
+ break ;
239
+ case GetNext when _changes . IsEmpty :
240
+ Context . BecomeStacked ( OnDeliverNext ) ;
241
+ break ;
242
+ case GetNext :
243
+ SendFirstChange ( ) ;
244
+ break ;
245
+ default :
246
+ Unhandled ( message ) ;
247
+ break ;
239
248
}
240
249
}
241
250
0 commit comments