public ClusterManifestProvider( ILocalSiloDetails localSiloDetails, SiloManifest localSiloManifest, IInternalGrainFactory grainFactory, ClusterMembershipService clusterMembershipService, IFatalErrorHandler fatalErrorHandler, ILogger <ClusterManifestProvider> logger, IOptions <TypeManagementOptions> options, IServiceProvider services) { _localSiloAddress = localSiloDetails.SiloAddress; _grainFactory = grainFactory; _logger = logger; _services = services; _clusterMembershipService = clusterMembershipService; _fatalErrorHandler = fatalErrorHandler; _options = options.Value; _current = new ClusterManifest( MajorMinorVersion.Zero, ImmutableDictionary.CreateRange(new[] { new KeyValuePair <SiloAddress, SiloManifest>(localSiloDetails.SiloAddress, localSiloManifest) })); _updates = new AsyncEnumerable <ClusterManifest>( (previous, proposed) => previous.Version <= MajorMinorVersion.Zero || proposed.Version > previous.Version, _current) { OnPublished = update => Interlocked.Exchange(ref _current, update) }; }
public ClusterManifestSystemTarget( SiloManifest siloManifest, IClusterManifestProvider clusterManifestProvider, ILocalSiloDetails siloDetails, ILoggerFactory loggerFactory) : base(Constants.ManifestProviderType, siloDetails.SiloAddress, loggerFactory) { _siloManifest = siloManifest; _clusterManifestProvider = clusterManifestProvider; }