InvokeOnCommit() private method

private InvokeOnCommit ( ) : void
return void
Esempio n. 1
0
 public void Batch(Action<IStorageActionsAccessor> action)
 {
     if (disposed)
     {
         Trace.WriteLine("TransactionalStorage.Batch was called after it was disposed, call was ignored.");
         return; // this may happen if someone is calling us from the finalizer thread, so we can't even throw on that
     }
     if(current.Value != null)
     {
         action(current.Value);
         return;
     }
     disposerLock.EnterReadLock();
     try
     {
         Interlocked.Exchange(ref lastUsageTime, DateTime.Now.ToBinary());
         using (tableStroage.BeginTransaction())
         {
             var storageActionsAccessor = new StorageActionsAccessor(tableStroage, uuidGenerator);
             current.Value = storageActionsAccessor;
             action(current.Value);
             tableStroage.Commit();
             storageActionsAccessor.InvokeOnCommit();
             onCommit();
         }
     }
     finally
     {
         disposerLock.ExitReadLock();
         current.Value = null;
     }
 }
Esempio n. 2
0
        public void Batch(Action <IStorageActionsAccessor> action)
        {
            if (current.Value != null)
            {
                action(current.Value);
                return;
            }
            disposerLock.EnterReadLock();
            try
            {
                if (disposed)
                {
                    Trace.WriteLine("TransactionalStorage.Batch was called after it was disposed, call was ignored.");
                    return;                     // this may happen if someone is calling us from the finalizer thread, so we can't even throw on that
                }

                Interlocked.Exchange(ref lastUsageTime, DateTime.Now.ToBinary());
                using (tableStroage.BeginTransaction())
                {
                    var storageActionsAccessor = new StorageActionsAccessor(tableStroage, uuidGenerator, DocumentCodecs, documentCacher);
                    current.Value = storageActionsAccessor;
                    action(current.Value);
                    tableStroage.Commit();
                    storageActionsAccessor.InvokeOnCommit();
                    onCommit();
                }
            }
            finally
            {
                disposerLock.ExitReadLock();
                current.Value = null;
            }
        }
Esempio n. 3
0
 private void ExecuteBatch(Action <IStorageActionsAccessor> action)
 {
     Interlocked.Exchange(ref lastUsageTime, SystemTime.UtcNow.ToBinary());
     using (tableStroage.BeginTransaction())
     {
         var storageActionsAccessor = new StorageActionsAccessor(tableStroage, uuidGenerator, DocumentCodecs, documentCacher);
         current.Value = storageActionsAccessor;
         action(current.Value);
         storageActionsAccessor.SaveAllTasks();
         tableStroage.Commit();
         storageActionsAccessor.InvokeOnCommit();
     }
 }
Esempio n. 4
0
        public void Batch(Action <IStorageActionsAccessor> action)
        {
            if (disposerLock.IsReadLockHeld)             // we are currently in a nested Batch call
            {
                if (current.Value != null)               // check again, just to be sure
                {
                    action(current.Value);
                    return;
                }
            }
            disposerLock.EnterReadLock();
            try
            {
                if (disposed)
                {
                    Trace.WriteLine("TransactionalStorage.Batch was called after it was disposed, call was ignored.");
                    return;                     // this may happen if someone is calling us from the finalizer thread, so we can't even throw on that
                }


                Interlocked.Exchange(ref lastUsageTime, SystemTime.Now.ToBinary());
                using (tableStroage.BeginTransaction())
                {
                    var storageActionsAccessor = new StorageActionsAccessor(tableStroage, uuidGenerator, DocumentCodecs, documentCacher);
                    current.Value = storageActionsAccessor;
                    action(current.Value);
                    storageActionsAccessor.SaveAllTasks();
                    tableStroage.Commit();
                    storageActionsAccessor.InvokeOnCommit();
                }
            }
            finally
            {
                disposerLock.ExitReadLock();
                if (disposed == false)
                {
                    current.Value = null;
                }
            }
            onCommit();             // call user code after we exit the lock
        }
Esempio n. 5
0
		private void ExecuteBatch(Action<IStorageActionsAccessor> action)
		{
			Interlocked.Exchange(ref lastUsageTime, SystemTime.UtcNow.ToBinary());
			using (tableStroage.BeginTransaction())
			{
				var storageActionsAccessor = new StorageActionsAccessor(tableStroage, uuidGenerator, DocumentCodecs, documentCacher);
				current.Value = storageActionsAccessor;
				action(current.Value);
				storageActionsAccessor.SaveAllTasks();
				storageActionsAccessor.InvokePreCommit();
				tableStroage.Commit();
				storageActionsAccessor.InvokeOnCommit();
			}
		}
Esempio n. 6
0
		public void Batch(Action<IStorageActionsAccessor> action)
		{
			if (disposerLock.IsReadLockHeld) // we are currently in a nested Batch call
			{
				if (current.Value != null) // check again, just to be sure
				{
					action(current.Value);
					return;
				}
			}
		    disposerLock.EnterReadLock();
			try
			{
				if (disposed)
				{
					Trace.WriteLine("TransactionalStorage.Batch was called after it was disposed, call was ignored.");
					return; // this may happen if someone is calling us from the finalizer thread, so we can't even throw on that
				}
					

				Interlocked.Exchange(ref lastUsageTime, SystemTime.Now.ToBinary());
				using (tableStroage.BeginTransaction())
				{
					var storageActionsAccessor = new StorageActionsAccessor(tableStroage, uuidGenerator, DocumentCodecs, documentCacher);
					current.Value = storageActionsAccessor;
					action(current.Value);
					storageActionsAccessor.SaveAllTasks();
					tableStroage.Commit();
					storageActionsAccessor.InvokeOnCommit();
				}
			}
			finally
			{
				disposerLock.ExitReadLock();
				if(disposed ==false)
					current.Value = null;
			}
			onCommit(); // call user code after we exit the lock
		}