Class SimpleStateMachine
Represents a state machine that keeps the entire state in the memory but periodically creates a persistent snapshot for recovery.
Inherited Members
Namespace: DotNext.Net.Cluster.Consensus.Raft.StateMachine
Assembly: DotNext.Net.Cluster.dll
Syntax
public abstract class SimpleStateMachine : IAsyncDisposable, IStateMachine, ISnapshotManager
Constructors
| Edit this page View SourceSimpleStateMachine(DirectoryInfo)
Initializes a new simple state machine.
Declaration
protected SimpleStateMachine(DirectoryInfo location)
Parameters
| Type | Name | Description |
|---|---|---|
| DirectoryInfo | location |
Methods
| Edit this page View SourceApplyAsync(LogEntry, CancellationToken)
Applies the log entry to this state machine.
Declaration
protected abstract ValueTask<bool> ApplyAsync(LogEntry entry, CancellationToken token)
Parameters
| Type | Name | Description |
|---|---|---|
| LogEntry | entry | The log entry to apply to the current state machine. |
| CancellationToken | token | The token that can be used to cancel the operation. |
Returns
| Type | Description |
|---|---|
| ValueTask<bool> | true if the current state must be persisted; otherwise, false. |
Exceptions
| Type | Condition |
|---|---|
| OperationCanceledException | The operation has been canceled. |
DisposeAsync()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.
Declaration
public virtual ValueTask DisposeAsync()
Returns
| Type | Description |
|---|---|
| ValueTask | A task that represents the asynchronous dispose operation. |
PersistAsync(IAsyncBinaryWriter, CancellationToken)
Persists the current state.
Declaration
protected abstract ValueTask PersistAsync(IAsyncBinaryWriter writer, CancellationToken token)
Parameters
| Type | Name | Description |
|---|---|---|
| IAsyncBinaryWriter | writer | The writer that can be used to write the state. |
| CancellationToken | token | The token that can be used to cancel the operation. |
Returns
| Type | Description |
|---|---|
| ValueTask | The task representing asynchronous execution of the method. |
RestoreAsync(CommandInterpreter, FileInfo, CancellationToken)
Restores the in-memory state from the snapshot.
Declaration
protected static ValueTask RestoreAsync(CommandInterpreter interpreter, FileInfo snapshotFile, CancellationToken token)
Parameters
| Type | Name | Description |
|---|---|---|
| CommandInterpreter | interpreter | The command interpreter. |
| FileInfo | snapshotFile | The snapshot file. |
| CancellationToken | token | The token that can be used to cancel the operation. |
Returns
| Type | Description |
|---|---|
| ValueTask | The task representing asynchronous execution of the method. |
Remarks
This method is intended to be called from RestoreAsync(FileInfo, CancellationToken) when the compatibility with CommandInterpreter is required.
Exceptions
| Type | Condition |
|---|---|
| OperationCanceledException | The operation has been canceled. |
RestoreAsync(FileInfo, CancellationToken)
Restores the in-memory state from the snapshot.
Declaration
protected abstract ValueTask RestoreAsync(FileInfo snapshotFile, CancellationToken token)
Parameters
| Type | Name | Description |
|---|---|---|
| FileInfo | snapshotFile | The snapshot file. |
| CancellationToken | token | The token that can be used to cancel the operation. |
Returns
| Type | Description |
|---|---|
| ValueTask | The task representing asynchronous execution of the method. |
Exceptions
| Type | Condition |
|---|---|
| OperationCanceledException | The operation has been canceled. |
RestoreAsync(CancellationToken)
Restores the in-memory state from the most recent snapshot stored on the disk.
Declaration
public ValueTask RestoreAsync(CancellationToken token = default)
Parameters
| Type | Name | Description |
|---|---|---|
| CancellationToken | token | The token that can be used to cancel the operation. |
Returns
| Type | Description |
|---|---|
| ValueTask | The task representing asynchronous execution of the method. |
Exceptions
| Type | Condition |
|---|---|
| OperationCanceledException | The operation has been canceled. |