Class ClusterConfigurationStorage<TAddress>
Represents base class for all implementations of cluster configuration storages.
Inheritance
Inherited Members
Namespace: DotNext.Net.Cluster.Consensus.Raft.Membership
Assembly: DotNext.Net.Cluster.dll
Syntax
public abstract class ClusterConfigurationStorage<TAddress> : Disposable, IClusterConfigurationStorage<TAddress>, IClusterConfigurationStorage, IDisposable where TAddress : notnull
Type Parameters
Name | Description |
---|---|
TAddress | The type of the cluster member address. |
Fields
| Edit this page View Sourceallocator
The memory allocator.
Declaration
protected readonly MemoryAllocator<byte>? allocator
Field Value
Type | Description |
---|---|
MemoryAllocator<byte> |
Properties
| Edit this page View SourceActiveConfiguration
Represents active cluster configuration maintained by the node.
Declaration
public abstract IClusterConfiguration ActiveConfiguration { get; }
Property Value
Type | Description |
---|---|
IClusterConfiguration |
HasProposal
Gets a value indicating that this storage has proposed configuration.
Declaration
public abstract bool HasProposal { get; }
Property Value
Type | Description |
---|---|
bool |
ProposedConfiguration
Represents proposed cluster configuration.
Declaration
public abstract IClusterConfiguration? ProposedConfiguration { get; }
Property Value
Type | Description |
---|---|
IClusterConfiguration |
Methods
| Edit this page View SourceAddMemberAsync(TAddress, CancellationToken)
Proposes a new member.
Declaration
protected abstract 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. |
ApplyAsync(CancellationToken)
Applies proposed configuration as active configuration.
Declaration
protected abstract 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. |
Decode(ref SequenceReader)
Decodes the address of the node from its binary representation.
Declaration
protected abstract TAddress Decode(ref SequenceReader reader)
Parameters
Type | Name | Description |
---|---|---|
SequenceReader | reader | The reader of binary data. |
Returns
Type | Description |
---|---|
TAddress | The decoded address. |
Dispose(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 SourceEncode(TAddress, ref BufferWriterSlim<byte>)
Encodes the address to its binary representation.
Declaration
protected abstract void Encode(TAddress address, ref BufferWriterSlim<byte> output)
Parameters
Type | Name | Description |
---|---|---|
TAddress | address | The address to encode. |
BufferWriterSlim<byte> | output | The buffer for the address. |
LoadConfigurationAsync(CancellationToken)
Loads configuration from the storage.
Declaration
protected abstract 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. |
ProposeAsync(IClusterConfiguration, CancellationToken)
Proposes the configuration.
Declaration
protected abstract 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. |
Remarks
If method is called multiple times then ProposedConfiguration will be rewritten.
RemoveMemberAsync(TAddress, CancellationToken)
Proposes removal of the existing member.
Declaration
protected abstract 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. |
Events
| Edit this page View SourceActiveConfigurationChanged
An event occurred when proposed configuration is applied.
Declaration
public event Func<TAddress, bool, CancellationToken, ValueTask> ActiveConfigurationChanged
Event Type
Type | Description |
---|---|
Func<TAddress, bool, CancellationToken, ValueTask> |