private void OnStateChange(CoordinatorState state) { _state = state; if (StateChanged != null) { StateChanged(this, new CoordinatorStateChangedEventArgs(state)); } }
private CoordinatorState CoordinatorStateToProto(PersistentShardCoordinator.State state) { var builder = CoordinatorState.CreateBuilder() .AddRangeShards(state.Shards.Select(entry => CoordinatorState.Types.ShardEntry.CreateBuilder() .SetShardId(entry.Key) .SetRegionRef(Akka.Serialization.Serialization.SerializedActorPath(entry.Value)) .Build())) .AddRangeRegions(state.Regions.Keys.Select(Akka.Serialization.Serialization.SerializedActorPath)) .AddRangeRegionProxies(state.RegionProxies.Select(Akka.Serialization.Serialization.SerializedActorPath)) .AddRangeUnallocatedShards(state.UnallocatedShards); return(builder.Build()); }
private object CoordinatorStateFromBinary(byte[] binary) { using (var stream = Decompress(binary)) { var state = CoordinatorState.ParseFrom(stream); var shards = ImmutableDictionary.CreateRange(state.ShardsList.Select(entry => new KeyValuePair <string, IActorRef>(entry.ShardId, ResolveActorRef(entry.RegionRef)))); var regionsZero = ImmutableDictionary.CreateRange(state.RegionsList.Select(region => new KeyValuePair <IActorRef, IImmutableList <string> >(ResolveActorRef(region), ImmutableList <string> .Empty))); var regions = shards.Aggregate(regionsZero, (acc, entry) => acc.SetItem(entry.Value, acc[entry.Value].Add(entry.Key))); var proxies = state.RegionProxiesList.Select(ResolveActorRef).ToImmutableHashSet(); var unallocatedShards = state.UnallocatedShardsList.ToImmutableHashSet(); return(new PersistentShardCoordinator.State( shards: shards, regions: regions, regionProxies: proxies, unallocatedShards: unallocatedShards)); } }
public CoordinatorStateChangedEventArgs(CoordinatorState state) { State = state; }