protected override void Setup(FeatureConfigurationContext context) { if (!context.Services.Any(descriptor => descriptor.ServiceType == typeof(IProvideCosmosClient))) { context.Services.AddSingleton(context.Settings.Get <IProvideCosmosClient>()); } var databaseName = context.Settings.Get <string>(SettingsKeys.DatabaseName); ContainerInformation?defaultContainerInformation = null; if (context.Settings.TryGet <ContainerInformation>(out var info)) { defaultContainerInformation = info; } var currentSharedTransactionalBatchHolder = new CurrentSharedTransactionalBatchHolder(); context.Services.AddTransient(_ => currentSharedTransactionalBatchHolder.Current.Create()); context.Services.AddSingleton(b => new ContainerHolderResolver(b.GetService <IProvideCosmosClient>(), defaultContainerInformation, databaseName)); context.Services.AddSingleton <ISynchronizedStorage>(b => new StorageSessionFactory(b.GetService <ContainerHolderResolver>(), currentSharedTransactionalBatchHolder)); context.Services.AddSingleton <ISynchronizedStorageAdapter>(b => new StorageSessionAdapter(currentSharedTransactionalBatchHolder)); context.Pipeline.Register(new CurrentSharedTransactionalBatchBehavior(currentSharedTransactionalBatchHolder), "Manages the lifecycle of the current storage session."); }
public StorageSessionAdapter(CurrentSharedTransactionalBatchHolder currentSharedTransactionalBatchHolder) { this.currentSharedTransactionalBatchHolder = currentSharedTransactionalBatchHolder; }
public CurrentSharedTransactionalBatchBehavior(CurrentSharedTransactionalBatchHolder currentTransactionalBatchHolder) { this.currentTransactionalBatchHolder = currentTransactionalBatchHolder; }
public Scope(CurrentSharedTransactionalBatchHolder sharedTransactionalBatchHolder) { this.sharedTransactionalBatchHolder = sharedTransactionalBatchHolder; }
public StorageSessionFactory(ContainerHolderResolver containerHolderResolver, CurrentSharedTransactionalBatchHolder currentSharedTransactionalBatchHolder) { this.containerHolderResolver = containerHolderResolver; this.currentSharedTransactionalBatchHolder = currentSharedTransactionalBatchHolder; }