forked from TrueCloudLab/frostfs-node
4f756bf121
Shard's mode was not used in the Node, so added only two modes whose roles are clear. More modes will be added in the future. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
47 lines
1 KiB
Go
47 lines
1 KiB
Go
package shard
|
|
|
|
import "errors"
|
|
|
|
// Mode represents enumeration of Shard work modes.
|
|
type Mode uint32
|
|
|
|
// ErrReadOnlyMode is returned when it is impossible to apply operation
|
|
// that changes shard's memory due to the "read-only" shard's mode.
|
|
var ErrReadOnlyMode = errors.New("shard is in read-only mode")
|
|
|
|
// TODO: more detailed description of shard modes.
|
|
|
|
const (
|
|
// ModeReadWrite is a Mode value for shard that is available
|
|
// for read and write operations. Default shard mode.
|
|
ModeReadWrite Mode = iota
|
|
|
|
// ModeReadOnly is a Mode value for shard that does not
|
|
// accept write operation but is readable.
|
|
ModeReadOnly
|
|
)
|
|
|
|
func (m Mode) String() string {
|
|
switch m {
|
|
default:
|
|
return "UNDEFINED"
|
|
case ModeReadWrite:
|
|
return "READ_WRITE"
|
|
case ModeReadOnly:
|
|
return "READ_ONLY"
|
|
}
|
|
}
|
|
|
|
// SetMode sets mode of the shard.
|
|
//
|
|
// Returns any error encountered that did not allow
|
|
// setting shard mode.
|
|
func (s *Shard) SetMode(m Mode) error {
|
|
s.mode.Store(uint32(m))
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s *Shard) getMode() Mode {
|
|
return Mode(s.mode.Load())
|
|
}
|