public static IFdbDatabaseScopeProvider Logged([NotNull] this IFdbDatabaseScopeProvider provider, [NotNull] Action <FdbLoggedTransaction> handler, FdbLoggingOptions options = FdbLoggingOptions.Default) { Contract.NotNull(provider, nameof(provider)); Contract.NotNull(handler, nameof(handler)); return(provider.CreateScope <object>((db, ct) => !ct.IsCancellationRequested ? Task.FromResult <(IFdbDatabase, object)>((Logged(db, handler), null)) : Task.FromCanceled <(IFdbDatabase, object)>(ct))); }
public FdbDatabaseTombstoneProvider([CanBeNull] IFdbDatabaseScopeProvider parent, [NotNull] Exception error, CancellationToken lifetime) { Contract.Requires(error != null); this.Parent = parent; this.Error = error; this.FailedTask = Task.FromException <IFdbDatabase>(error); this.Lifetime = parent != null?CancellationTokenSource.CreateLinkedTokenSource(parent.Cancellation, lifetime) : CancellationTokenSource.CreateLinkedTokenSource(lifetime); }
public static IFdbDatabaseScopeProvider CreateScope([NotNull] this IFdbDatabaseScopeProvider provider, [NotNull] Func <IFdbDatabase, CancellationToken, Task> init) { Contract.NotNull(provider, nameof(provider)); Contract.NotNull(init, nameof(init)); return(provider.CreateScope <object>(async(db, cancel) => { await init(db, cancel).ConfigureAwait(false); return (db, null); })); }
public FdbDatabaseScopeProvider(IFdbDatabaseScopeProvider parent, Func <IFdbDatabase, CancellationToken, Task <(IFdbDatabase, TState)> > handler, CancellationToken lifetime = default)
public FdbDatabaseScopeProvider([NotNull] IFdbDatabaseScopeProvider parent, [NotNull] Func <IFdbDatabase, CancellationToken, Task <(IFdbDatabase, TState)> > handler, [NotNull] CancellationTokenSource lifetime)
/// <summary>Wait for the scope to become ready.</summary> public static ValueTask EnsureIsReady([NotNull] this IFdbDatabaseScopeProvider provider, CancellationToken ct) { if (provider.IsAvailable) { return(default);
public static IFdbDatabaseScopeProvider <FdbDirectorySubspace> CreateDirectoryScope([NotNull] this IFdbDatabaseScopeProvider provider, FdbDirectoryPath path) { return(provider.CreateScope <FdbDirectorySubspace>(async(db, cancel) => { var folder = await db.Directory.CreateOrOpenAsync(path, cancel); return (db, folder); })); }