コード例 #1
0
 public void Write(Action <StorageActionsAccessor> func)
 {
     lock (locker)
     {
         using (var reader = OpenReader())
         {
             var mutator  = new StorageMutator(writer, reader, transaction);
             var viewer   = new StorageReader(reader, transaction);
             var accessor = new StorageActionsAccessor(mutator, viewer, reader, writer);
             func(accessor);
             mutator.Flush();
             var storageTransaction = mutator.CreateTransaction();
             if (transaction.Equals(storageTransaction))
             {
                 return;
             }
             WriteTransaction(storageTransaction);
             writer.Flush(true);
             transaction = storageTransaction;
             accessor.RaiseCommitEvent();
             if (onCommit != null)
             {
                 onCommit();
             }
         }
     }
 }
コード例 #2
0
		public StorageActionsAccessor(StorageMutator mutator, StorageReader viewer, Stream reader, Stream writer)
		{
			this.mutator = mutator;
			this.viewer = viewer;
			this.reader = reader;
			this.writer = writer;
		}
コード例 #3
0
 public StorageActionsAccessor(StorageMutator mutator, StorageReader viewer, Stream reader, Stream writer)
 {
     this.mutator = mutator;
     this.viewer  = viewer;
     this.reader  = reader;
     this.writer  = writer;
 }
コード例 #4
0
		public void Write(Action<StorageActionsAccessor> func)
		{
			lock (locker)
			{
				using (var reader = OpenReader())
				{
					var mutator = new StorageMutator(writer, reader, transaction);
					var viewer = new StorageReader(reader, transaction);
					var accessor = new StorageActionsAccessor(mutator, viewer, reader, writer);
					func(accessor);
					mutator.Flush();
					var storageTransaction = mutator.CreateTransaction();
					if (transaction.Equals(storageTransaction))
						return;
					WriteTransaction(storageTransaction);
					writer.Flush(true);
					transaction = storageTransaction;
					accessor.RaiseCommitEvent();
					if (onCommit != null)
						onCommit();
				}
			}
		}