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 ClientClusterManifestProvider( IInternalGrainFactory grainFactory, GatewayManager gatewayManager, ILogger <ClientClusterManifestProvider> logger, IOptions <TypeManagementOptions> options) { _grainFactory = grainFactory; _logger = logger; _gatewayManager = gatewayManager; _options = options.Value; _updates = new AsyncEnumerable <ClusterManifest>( (previous, proposed) => previous is null || proposed.Version == MajorMinorVersion.Zero || proposed.Version > previous.Version, _current) { OnPublished = update => Interlocked.Exchange(ref _current, update) }; }
public ClientClusterManifestProvider( IServiceProvider services, GatewayManager gatewayManager, ILogger <ClientClusterManifestProvider> logger, ClientManifestProvider clientManifestProvider, IOptions <TypeManagementOptions> typeManagementOptions) { _logger = logger; _typeManagementOptions = typeManagementOptions.Value; _services = services; _gatewayManager = gatewayManager; this.LocalGrainManifest = clientManifestProvider.ClientManifest; _current = new ClusterManifest(MajorMinorVersion.Zero, ImmutableDictionary <SiloAddress, GrainManifest> .Empty, ImmutableArray.Create(this.LocalGrainManifest)); _updates = new AsyncEnumerable <ClusterManifest>( (previous, proposed) => previous is null || proposed.Version == MajorMinorVersion.Zero || proposed.Version > previous.Version, _current) { OnPublished = update => Interlocked.Exchange(ref _current, update) }; }