Class TransactionsDecorator
- Namespace
- Foundation.Data.Doublets.Cli
- Assembly
- Foundation.Data.Doublets.Cli.dll
Decorator that records every Create/Update/Delete
as a reversible Transition in a sidecar doublets log
store. Supports explicit transactions, sync/async commits, three log
retention policies, and crash recovery. Optional — no behavioural
change if not opted in (R8).
public sealed class TransactionsDecorator : LinksDecoratorBase<uint>, ITransactionsLinks, INamedTypesLinks<uint>, ILinks<uint>, ILinks<uint, LinksConstants<uint>>, INamedTypes<uint>, IDisposable
- Implements
-
ILinks<uint>
- Inherited Members
-
LinksDecoratorBase<uint>.FacadeLinksDecoratorBase<uint>.ConstantsLinksOperatorBase<uint>.Links
- Extension Methods
Constructors
TransactionsDecorator(INamedTypesLinks<uint>, INamedTypesLinks<uint>, LogRetentionPolicy?, CommitMode, bool)
public TransactionsDecorator(INamedTypesLinks<uint> inner, INamedTypesLinks<uint> logStore, LogRetentionPolicy? retentionPolicy = null, CommitMode commitMode = CommitMode.Sync, bool trace = false)
Parameters
innerINamedTypesLinks<uint>logStoreINamedTypesLinks<uint>retentionPolicyLogRetentionPolicycommitModeCommitModetracebool
Properties
AppliedSequence
public long AppliedSequence { get; }
Property Value
CommitMode
public CommitMode CommitMode { get; set; }
Property Value
LastLoggedSequence
public long LastLoggedSequence { get; }
Property Value
Log
public IReadOnlyList<Transition> Log { get; }
Property Value
RetentionPolicy
public LogRetentionPolicy RetentionPolicy { get; set; }
Property Value
Methods
ApplyTransition(Transition)
Apply a single transition's side-effect against the data store without writing a new log entry. Intended for use by higher-level decorators (e.g. version control) that need to drive replay/rewind without producing additional transitions.
public void ApplyTransition(Transition transition)
Parameters
transitionTransition
BeginTransaction()
public ITransaction BeginTransaction()
Returns
BeginTransactionAsync(CancellationToken)
public Task<ITransaction> BeginTransactionAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
Create(IList<uint>?, WriteHandler<uint>?)
Creates the restriction.
public override uint Create(IList<uint>? substitution, WriteHandler<uint>? handler)
Parameters
Returns
- uint
The link
Delete(IList<uint>?, WriteHandler<uint>?)
Deletes the restriction.
public override uint Delete(IList<uint>? restriction, WriteHandler<uint>? handler)
Parameters
Returns
Dispose()
Stops the background worker. The wrapped data store and log store are not disposed here; callers are expected to own those.
public void Dispose()
GetByName(string)
public uint GetByName(string name)
Parameters
namestring
Returns
GetName(uint)
public string? GetName(uint link)
Parameters
linkuint
Returns
MakeTransitionsDatabaseFilename(string)
Conventional sidecar filename for the transitions log.
public static string MakeTransitionsDatabaseFilename(string databaseFilename)
Parameters
databaseFilenamestring
Returns
Recover()
public void Recover()
RemoveName(uint)
public void RemoveName(uint link)
Parameters
linkuint
RevertTransition(Transition)
Revert a single transition's side-effect against the data store without writing a new log entry. Intended for use by higher-level decorators (e.g. version control) that need to drive replay/rewind without producing additional transitions.
public void RevertTransition(Transition transition)
Parameters
transitionTransition
SetName(uint, string)
public uint SetName(uint link, string name)
Parameters
Returns
Shutdown()
Stops the background worker. Kept as a named method for backwards compatibility; Dispose() delegates to it.
public void Shutdown()
Update(IList<uint>?, IList<uint>?, WriteHandler<uint>?)
Updates the restriction.
public override uint Update(IList<uint>? restriction, IList<uint>? substitution, WriteHandler<uint>? handler)
Parameters
restrictionIList<uint>The restriction.
substitutionIList<uint>The substitution.
handlerWriteHandler<uint>
Returns
- uint
The link