/// <summary>
        /// Configures reminders using legacy configuration.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        /// <param name="services">The service collection.</param>
        internal static void Configure(GlobalConfiguration configuration, ISiloHostBuilder builder)
        {
            var serviceType = configuration.ReminderServiceType;

            switch (serviceType)
            {
            case GlobalConfiguration.ReminderServiceProviderType.AdoNet:
            {
                var adapter = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyReminderTableAdapter>(Constants.ORLEANS_REMINDERS_ADONET);
                adapter.Configure(configuration, builder);
                break;
            }

            case GlobalConfiguration.ReminderServiceProviderType.AzureTable:
            {
                var adapter = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyReminderTableAdapter>(Constants.ORLEANS_REMINDERS_AZURESTORAGE);
                adapter.Configure(configuration, builder);
                break;
            }

            case GlobalConfiguration.ReminderServiceProviderType.ReminderTableGrain:
                builder.UseInMemoryReminderService();
                break;

            case GlobalConfiguration.ReminderServiceProviderType.MockTable:
                builder.ConfigureServices(services =>
                {
                    services.AddSingleton <IReminderTable, MockReminderTable>();
                    services.AddOptions <MockReminderTableOptions>()
                    .Configure <GlobalConfiguration>((options, config) => { options.OperationDelay = config.MockReminderTableTimeout; });
                    services.ConfigureFormatter <MockReminderTableOptions>();
                });
                break;

            case GlobalConfiguration.ReminderServiceProviderType.Custom:
                builder.ConfigureServices(services => services.AddSingleton <IReminderTable>(
                                              serviceProvider =>
                {
                    var logger = serviceProvider.GetRequiredService <ILoggerFactory>().CreateLogger("ReminderTableFactory");
                    return(AssemblyLoader.LoadAndCreateInstance <IReminderTable>(configuration.ReminderTableAssembly, logger, serviceProvider));
                }));
                break;

            case GlobalConfiguration.ReminderServiceProviderType.NotSpecified:
            case GlobalConfiguration.ReminderServiceProviderType.Disabled:
                break;

            default:
                throw new ArgumentOutOfRangeException(
                          nameof(configuration.ReminderServiceType),
                          $"The {nameof(configuration.ReminderServiceType)} value {serviceType} is not supported.");
            }
        }
        public static void ConfigureServices(
            ClientConfiguration clientConfiguration,
            IServiceCollection services)
        {
            // If a gateway list provider has already been configured in the service collection, use that instead.
            if (services.Any(reg => reg.ServiceType == typeof(IGatewayListProvider)))
            {
                return;
            }

            ILegacyGatewayListProviderConfigurator configurator = null;

            switch (clientConfiguration.GatewayProviderToUse)
            {
            case ClientConfiguration.GatewayProviderType.AzureTable:
            {
                string assemblyName = Constants.ORLEANS_CLUSTERING_AZURESTORAGE;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyGatewayListProviderConfigurator>(assemblyName);
            }
            break;

            case ClientConfiguration.GatewayProviderType.AdoNet:
            {
                string assemblyName = Constants.ORLEANS_CLUSTERING_ADONET;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyGatewayListProviderConfigurator>(assemblyName);
            }
            break;

            case ClientConfiguration.GatewayProviderType.Custom:
            {
                string assemblyName = clientConfiguration.CustomGatewayProviderAssemblyName;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyGatewayListProviderConfigurator>(assemblyName);
            }
            break;

            case ClientConfiguration.GatewayProviderType.ZooKeeper:
            {
                string assemblyName = Constants.ORLEANS_CLUSTERING_ZOOKEEPER;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyGatewayListProviderConfigurator>(assemblyName);
            }
            break;

            case ClientConfiguration.GatewayProviderType.Config:
                configurator = new LegacyStaticGatewayProviderConfigurator();
                break;

            default:
                break;
            }
            configurator?.ConfigureServices(clientConfiguration, services);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Legacy way to create membership table. Will need to move to a legacy package in the future
        /// </summary>
        /// <returns></returns>
        internal static void ConfigureServices(GlobalConfiguration configuration, IServiceCollection services)
        {
            ILegacyMembershipConfigurator configurator = null;

            switch (configuration.LivenessType)
            {
            case LivenessProviderType.MembershipTableGrain:
                configurator = new LegacyGrainBasedMembershipConfigurator();
                break;

            case LivenessProviderType.AdoNet:
            {
                string assemblyName = Constants.ORLEANS_CLUSTERING_ADONET;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyMembershipConfigurator>(assemblyName);
            }
            break;

            case LivenessProviderType.AzureTable:
            {
                string assemblyName = Constants.ORLEANS_CLUSTERING_AZURESTORAGE;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyMembershipConfigurator>(assemblyName);
            }
            break;

            case LivenessProviderType.ZooKeeper:
            {
                string assemblyName = Constants.ORLEANS_CLUSTERING_ZOOKEEPER;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyMembershipConfigurator>(assemblyName);
            }
            break;

            case LivenessProviderType.Custom:
            {
                string assemblyName = configuration.MembershipTableAssembly;
                configurator = LegacyAssemblyLoader.LoadAndCreateInstance <ILegacyMembershipConfigurator>(assemblyName);
            }
            break;

            default:
                break;
            }

            configurator?.Configure(configuration, services);
        }