/// <summary>Create an empty log for a newly created transaction</summary> public FdbTransactionLog(FdbLoggingOptions options) { this.Options = options; this.Commands = new ConcurrentQueue <Command>(); if (this.ShoudCaptureTransactionStackTrace) { this.CallSite = CaptureStackTrace(2); } }
public static FdbLoggedDatabase Logged([NotNull] this IFdbDatabase database, [NotNull] Action<FdbLoggedTransaction> handler, FdbLoggingOptions options = FdbLoggingOptions.Default) { if (database == null) throw new ArgumentNullException("database"); if (handler == null) throw new ArgumentNullException("handler"); // prevent multiple logging database = WithoutLogging(database); return new FdbLoggedDatabase(database, false, false, handler, options); }
/// <summary>Create an empty log for a newly created transaction</summary> public FdbTransactionLog(FdbLoggingOptions options) { this.Options = options; this.Commands = new ConcurrentQueue<Command>(); if (this.ShoudCaptureTransactionStackTrace) { this.CallSite = CaptureStackTrace(2); } }
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 static FdbLoggedDatabase Logged([NotNull] this IFdbDatabase database, [NotNull] Action <FdbLoggedTransaction> handler, FdbLoggingOptions options = FdbLoggingOptions.Default) { Contract.NotNull(database, nameof(database)); Contract.NotNull(handler, nameof(handler)); // prevent multiple logging database = WithoutLogging(database); return(new FdbLoggedDatabase(database, false, false, handler, options)); }
public FdbLoggedDatabase(IFdbDatabase database, bool forceReadOnly, bool ownsDatabase, Action<FdbLoggedTransaction> onCommitted, FdbLoggingOptions defaultOptions = FdbLoggingOptions.Default) : base(database, forceReadOnly, ownsDatabase) { this.OnCommitted = onCommitted; this.LoggingOptions = defaultOptions; }
/// <summary>Wrap a database with a filter that will log the activity of all transactions</summary> /// <param name="database">Wrapped database</param> /// <param name="forceReadOnly">If true, deny all write operations.</param> /// <param name="ownsDatabase">If true, also dispose the wrapped database if this instance is disposed.</param> /// <param name="onCommitted">Handler that will be called when a transaction is either committed succesfully, or disposed. The log can be accessed via the <see cref="FdbLoggedTransaction.Log"/> property.</param> public FdbLoggedDatabase(IFdbDatabase database, bool forceReadOnly, bool ownsDatabase, Action <FdbLoggedTransaction> onCommitted, FdbLoggingOptions defaultOptions = FdbLoggingOptions.Default) : base(database, forceReadOnly, ownsDatabase) { this.OnCommitted = onCommitted; this.LoggingOptions = defaultOptions; }
/// <summary>Wrap an existing transaction and log all operations performed</summary> public FdbLoggedTransaction(IFdbTransaction trans, bool ownsTransaction, Action <FdbLoggedTransaction> onCommitted, FdbLoggingOptions options) : base(trans, false, ownsTransaction) { this.Log = new FdbTransactionLog(options); this.Committed = onCommitted; this.Log.Start(this); }
public void SetDefaultLogHandler(Action <FdbTransactionLog> handler, FdbLoggingOptions options = default) { this.DefaultLogHandler = handler; this.DefaultLogOptions = options; }
public static FdbLoggedDatabase Logged([NotNull] this IFdbDatabase database, [NotNull] Action <FdbLoggedTransaction> handler, FdbLoggingOptions options = FdbLoggingOptions.Default) { if (database == null) { throw new ArgumentNullException(nameof(database)); } if (handler == null) { throw new ArgumentNullException(nameof(handler)); } // prevent multiple logging database = WithoutLogging(database); return(new FdbLoggedDatabase(database, false, false, handler, options)); }