Class PersistentClusterConfigurationStorage<TAddress>
Represents persistent cluster configuration storage.
Implements
Inherited Members
Namespace: DotNext.Net.Cluster.Consensus.Raft.Membership
Assembly: DotNext.Net.Cluster.dll
Syntax
public abstract class PersistentClusterConfigurationStorage<TAddress> : ClusterConfigurationStorage<TAddress>, IClusterConfigurationStorage<TAddress>, IClusterConfigurationStorage, IDisposable, IAsyncDisposable where TAddress : notnull
Type Parameters
Name | Description |
---|---|
TAddress | The type of the cluster member address. |
Constructors
| Edit this page View SourcePersistentClusterConfigurationStorage(string, int, IEqualityComparer<TAddress>?, MemoryAllocator<byte>?)
Initializes a new persistent storage.
Declaration
protected PersistentClusterConfigurationStorage(string path, int fileBufferSize = 512, IEqualityComparer<TAddress>? comparer = null, MemoryAllocator<byte>? allocator = null)
Parameters
Type | Name | Description |
---|---|---|
string | path | The full path to the folder used as persistent storage of cluster members. |
int | fileBufferSize | The buffer size for file I/O. |
IEqualityComparer<TAddress> | comparer | The address comparer. |
MemoryAllocator<byte> | allocator | The memory allocator for file I/O. |
Properties
| Edit this page View SourceActiveConfiguration
Gets active configuration.
Declaration
public override sealed IClusterConfiguration ActiveConfiguration { get; }
Property Value
Type | Description |
---|---|
IClusterConfiguration |
Overrides
| Edit this page View SourceHasProposal
Gets a value indicating that this storage has proposed configuration.
Declaration
public override sealed bool HasProposal { get; }
Property Value
Type | Description |
---|---|
bool |
Overrides
| Edit this page View SourceProposedConfiguration
Gets proposed configuration.
Declaration
public override sealed IClusterConfiguration? ProposedConfiguration { get; }
Property Value
Type | Description |
---|---|
IClusterConfiguration |
Overrides
Methods
| Edit this page View SourceAddMemberAsync(TAddress, CancellationToken)
Proposes a new member.
Declaration
protected override sealed ValueTask<bool> AddMemberAsync(TAddress address, CancellationToken token = default)
Parameters
Type | Name | Description |
---|---|---|
TAddress | address | The address of the cluster member. |
CancellationToken | token | The token that can be used to cancel the operation. |
Returns
Type | Description |
---|---|
ValueTask<bool> | true if the new member is added to the proposed configuration; false if the storage has the proposed configuration already. |
Overrides
| Edit this page View SourceApplyAsync(CancellationToken)
Applies proposed configuration as active configuration.
Declaration
protected override sealed ValueTask ApplyAsync(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 result. |
Overrides
| Edit this page View SourceDispose(bool)
Releases managed and unmanaged resources associated with this object.
Declaration
protected override void Dispose(bool disposing)
Parameters
Type | Name | Description |
---|---|---|
bool | disposing | true if called from Dispose(); false if called from finalizer ~Disposable(). |
Overrides
| Edit this page View SourceDisposeAsync()
Releases managed resources associated with this object.
Declaration
public ValueTask DisposeAsync()
Returns
Type | Description |
---|---|
ValueTask | The task representing asynchronous result. |
DisposeAsyncCore()
Releases managed resources associated with this object asynchronously.
Declaration
protected override ValueTask DisposeAsyncCore()
Returns
Type | Description |
---|---|
ValueTask | The task representing asynchronous execution of this method. |
Overrides
Remarks
This method makes sense only if derived class implements IAsyncDisposable interface.
LoadConfigurationAsync(CancellationToken)
Loads configuration from the storage.
Declaration
protected override sealed ValueTask LoadConfigurationAsync(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 result. |
Overrides
| Edit this page View SourceProposeAsync(IClusterConfiguration, CancellationToken)
Proposes the configuration.
Declaration
protected override sealed ValueTask ProposeAsync(IClusterConfiguration configuration, CancellationToken token = default)
Parameters
Type | Name | Description |
---|---|---|
IClusterConfiguration | configuration | The proposed configuration. |
CancellationToken | token | The token that can be used to cancel the operation. |
Returns
Type | Description |
---|---|
ValueTask | The task representing asynchronous result. |
Overrides
Remarks
If method is called multiple times then ProposedConfiguration will be rewritten.
RemoveMemberAsync(TAddress, CancellationToken)
Proposes removal of the existing member.
Declaration
protected override sealed ValueTask<bool> RemoveMemberAsync(TAddress address, CancellationToken token = default)
Parameters
Type | Name | Description |
---|---|---|
TAddress | address | The address of the cluster member. |
CancellationToken | token | The token that can be used to cancel the operation. |
Returns
Type | Description |
---|---|
ValueTask<bool> | true if the new member is added to the proposed configuration; false if the storage has the proposed configuration already. |