public CassandraGrainStorage(
            string name,
            CassandraStorageOptions cassandraStorageOptions,
            IOptions <ClusterOptions> clusterOptions,
            ILogger <CassandraGrainStorage> logger,
            IGrainFactory grainFactory,
            ITypeResolver typeResolver,
            IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider,
            ILoggerProvider loggerProvider)
        {
            _name      = name;
            _serviceId = clusterOptions.Value.ServiceId;
            _cassandraStorageOptions = cassandraStorageOptions;
            _logger               = logger;
            _grainFactory         = grainFactory;
            _typeResolver         = typeResolver;
            _concurrentStateTypes = new HashSet <Type>(concurrentGrainStateTypesProvider.GetGrainStateTypes());

            Diagnostics.CassandraPerformanceCountersEnabled = _cassandraStorageOptions.Diagnostics.PerformanceCountersEnabled;
            Diagnostics.CassandraStackTraceIncluded         = _cassandraStorageOptions.Diagnostics.StackTraceIncluded;

            if (loggerProvider != null)
            {
                Diagnostics.AddLoggerProvider(loggerProvider);
            }
        }
Exemple #2
0
 /// <summary>
 /// Configure silo to use Cassandra storage as the default grain storage.
 /// </summary>
 public static ISiloHostBuilder AddCassandraGrainStorageAsDefault(
     this ISiloHostBuilder builder,
     Action <OptionsBuilder <CassandraStorageOptions> > configureOptions  = null,
     IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider = null)
 {
     return(builder.AddCassandraGrainStorage(ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME, configureOptions, concurrentGrainStateTypesProvider));
 }
Exemple #3
0
 /// <summary>
 /// Configure silo to use Cassandra storage for grain storage.
 /// </summary>
 public static ISiloHostBuilder AddCassandraGrainStorage(
     this ISiloHostBuilder builder,
     string name,
     Action <OptionsBuilder <CassandraStorageOptions> > configureOptions  = null,
     IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider = null)
 {
     return(builder.ConfigureServices(services => services.AddCassandraGrainStorage(name, configureOptions, concurrentGrainStateTypesProvider)));
 }
Exemple #4
0
 /// <summary>
 /// Configure silo to use Cassandra storage for grain storage.
 /// </summary>
 public static IServiceCollection AddCassandraGrainStorage(
     this IServiceCollection services,
     string name,
     Action <CassandraStorageOptions> configureOptions,
     IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider = null)
 {
     return(services.AddCassandraGrainStorage(name, ob => ob.Configure(configureOptions), concurrentGrainStateTypesProvider));
 }
Exemple #5
0
 /// <summary>
 /// Configure silo to use Cassandra storage as the default grain storage.
 /// </summary>
 public static IServiceCollection AddCassandraGrainStorageAsDefault(
     this IServiceCollection services,
     Action <CassandraStorageOptions> configureOptions,
     IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider = null)
 {
     return(services.AddCassandraGrainStorage(
                ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME,
                ob => ob.Configure(configureOptions),
                concurrentGrainStateTypesProvider));
 }
Exemple #6
0
 /// <summary>
 /// Configure silo to use Cassandra storage as the default grain storage.
 /// </summary>
 public static ISiloHostBuilder AddCassandraGrainStorageAsDefault(
     this ISiloHostBuilder builder,
     Func <IConfiguration, IConfiguration> configurationProvider,
     IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider = null)
 {
     return(builder.ConfigureServices((context, services) =>
     {
         services.AddCassandraGrainStorage(
             ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME,
             ob => ob.Bind(configurationProvider(context.Configuration)),
             concurrentGrainStateTypesProvider);
     }));
 }
Exemple #7
0
 /// <summary>
 /// Configure silo to use Cassandra storage for grain storage.
 /// </summary>
 public static ISiloHostBuilder AddCassandraGrainStorage(
     this ISiloHostBuilder builder,
     string name,
     Func <IConfiguration, IConfiguration> configurationProvider,
     IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider = null)
 {
     return(builder.ConfigureServices((context, services) =>
     {
         services.AddCassandraGrainStorage(
             name,
             ob => ob.Bind(configurationProvider(context.Configuration)),
             concurrentGrainStateTypesProvider);
     }));
 }
Exemple #8
0
        /// <summary>
        /// Configure silo to use Cassandra storage for grain storage.
        /// </summary>
        public static IServiceCollection AddCassandraGrainStorage(
            this IServiceCollection services,
            string name,
            Action <OptionsBuilder <CassandraStorageOptions> > configureOptions  = null,
            IConcurrentGrainStateTypesProvider concurrentGrainStateTypesProvider = null)
        {
            configureOptions?.Invoke(services.AddOptions <CassandraStorageOptions>(name));

            //services.AddTransient<IConfigurationValidator>(sp => new CassandraStorageOptionsValidator(sp.GetService<IOptionsSnapshot<CassandraStorageOptions>>().Get(name), name));
            services.ConfigureNamedOptionForLogging <CassandraStorageOptions>(name);
            services.TryAddSingleton(sp => sp.GetServiceByName <IGrainStorage>(ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME));

            return(services
                   .AddSingletonNamedService(name, (sp, n) => concurrentGrainStateTypesProvider ?? new NullConcurrentGrainStateTypesProvider())
                   .AddSingletonNamedService(name, CassandraGrainStorageFactory.Create)
                   .AddSingletonNamedService(name, (sp, n) => (ILifecycleParticipant <ISiloLifecycle>)sp.GetRequiredServiceByName <IGrainStorage>(n)));
        }