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(); } } } }
public StorageActionsAccessor(StorageMutator mutator, StorageReader viewer, Stream reader, Stream writer) { this.mutator = mutator; this.viewer = viewer; this.reader = reader; this.writer = writer; }
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(); } } }