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)
     };
 }