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