diff --git a/src/DotNetCore.CAP/ICapTransaction.Base.cs b/src/DotNetCore.CAP/ICapTransaction.Base.cs new file mode 100644 index 0000000..3ab5fb2 --- /dev/null +++ b/src/DotNetCore.CAP/ICapTransaction.Base.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using DotNetCore.CAP.Models; + +namespace DotNetCore.CAP +{ + public abstract class CapTransactionBase : ICapTransaction + { + private readonly IDispatcher _dispatcher; + + private readonly IList _bufferList; + + protected CapTransactionBase(IDispatcher dispatcher) + { + _dispatcher = dispatcher; + _bufferList = new List(1); + } + + public bool AutoCommit { get; set; } + + public object DbTransaction { get; set; } + + protected internal void AddToSent(CapPublishedMessage msg) + { + _bufferList.Add(msg); + } + + protected void Flush() + { + foreach (var message in _bufferList) + { + _dispatcher.EnqueueToPublish(message); + } + } + + public abstract void Commit(); + + public abstract void Rollback(); + + public abstract void Dispose(); + } +}