Пример #1
0
        /// <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);
			}
		}
Пример #4
0
        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)));
        }
Пример #5
0
        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;
 }
Пример #8
0
 /// <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;
 }
Пример #10
0
        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));
        }