Exemplo n.º 1
0
 private void OnStateChange(CoordinatorState state)
 {
     _state = state;
     if (StateChanged != null)
     {
         StateChanged(this, new CoordinatorStateChangedEventArgs(state));
     }
 }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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));
            }
        }
Exemplo n.º 4
0
 public CoordinatorStateChangedEventArgs(CoordinatorState state)
 {
     State = state;
 }