public ClusterManifestProvider( ILocalSiloDetails localSiloDetails, SiloManifestProvider siloManifestProvider, ClusterMembershipService clusterMembershipService, IFatalErrorHandler fatalErrorHandler, ILogger <ClusterManifestProvider> logger, IServiceProvider services) { _localSiloAddress = localSiloDetails.SiloAddress; _logger = logger; _services = services; _clusterMembershipService = clusterMembershipService; _fatalErrorHandler = fatalErrorHandler; this.LocalGrainManifest = siloManifestProvider.SiloManifest; _current = new ClusterManifest( MajorMinorVersion.Zero, ImmutableDictionary.CreateRange(new[] { new KeyValuePair <SiloAddress, GrainManifest>(localSiloDetails.SiloAddress, this.LocalGrainManifest) }), ImmutableArray.Create(this.LocalGrainManifest)); _updates = new AsyncEnumerable <ClusterManifest>( (previous, proposed) => previous.Version <= MajorMinorVersion.Zero || proposed.Version > previous.Version, _current) { OnPublished = update => Interlocked.Exchange(ref _current, update) }; }
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) }; }