Пример #1
0
        private static void HandleRegisterProxy <TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.RegisterProxy registerProxy) where TCoordinator : IShardCoordinator
        {
            var proxy = registerProxy.ShardRegionProxy;

            coordinator.Log.Debug("ShardRegion proxy registered: [{0}]", proxy);
            if (coordinator.CurrentState.RegionProxies.Contains(proxy))
            {
                proxy.Tell(new PersistentShardCoordinator.RegisterAck(coordinator.Self));
            }
            else
            {
                var context = coordinator.Context;
                var self    = coordinator.Self;
                coordinator.Update(new PersistentShardCoordinator.ShardRegionProxyRegistered(proxy), e =>
                {
                    coordinator.CurrentState = coordinator.CurrentState.Updated(e);
                    context.Watch(proxy);
                    proxy.Tell(new PersistentShardCoordinator.RegisterAck(self));
                });
            }
        }