コード例 #1
0
        public CassandraEventStoreFactory(Pipeline.Config.ISettingsBuilder builder, ICassandraEventStoreSettings settings, ITenantList tenants)
        {
            if (ReferenceEquals(null, builder) == true)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (ReferenceEquals(null, settings) == true)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            this.settings     = settings;
            this.tenants      = tenants;
            this.builder      = builder;
            tenantStores      = new Dictionary <string, IEventStore>();
            tenantPlayers     = new Dictionary <string, IEventStorePlayer>();
            hasTenantsDefined = tenants.GetTenants().Count() > 1 || (tenants.GetTenants().Count() == 1 && tenants.GetTenants().Any(t => t.Equals(CronusAssembly.EldersTenant) == false));
            if (hasTenantsDefined)
            {
                foreach (var tenant in tenants.GetTenants())
                {
                    InitializeTenant(tenant);
                }
            }
            else
            {
                InitializeTenant(NoTenantName);
            }
        }
コード例 #2
0
        public override void Build()
        {
            var builder = this as ISettingsBuilder;
            ICassandraEventStoreSettings settings       = this as ICassandraEventStoreSettings;
            Func <ITenantList>           tenantList     = () => builder.Container.Resolve <ITenantList>();
            Func <IEventStoreFactory>    factory        = () => new CassandraEventStoreFactory(builder, settings, tenantList());
            Func <DefaultTenantResolver> tenantResolver = () => new DefaultTenantResolver();

            builder.Container.RegisterSingleton <IEventStoreFactory>(factory, builder.Name);
            builder.Container.RegisterSingleton <IEventStore>(() => new MultiTenantEventStore(builder.Container.Resolve <IEventStoreFactory>(builder.Name), tenantResolver()), builder.Name);
        }