frostfs-node/pkg/local_object_storage/shard/mode.go

57 lines
1,020 B
Go
Raw Normal View History

package shard
// Mode represents enumeration of Shard work modes.
type Mode uint32
// TODO: more detailed description of shard modes.
const (
_ Mode = iota
// ModeActive is a Mode value for active shard.
ModeActive
// ModeInactive is a Mode value for inactive shard.
ModeInactive
// ModeReadOnly is a Mode value for read-only shard.
ModeReadOnly
// ModeFault is a Mode value for faulty shard.
ModeFault
// ModeEvacuate is a Mode value for evacuating shard.
ModeEvacuate
)
func (m Mode) String() string {
switch m {
default:
return "UNDEFINED"
case ModeActive:
return "ACTIVE"
case ModeInactive:
return "INACTIVE"
case ModeReadOnly:
return "READ_ONLY"
case ModeFault:
return "FAULT"
case ModeEvacuate:
return "EVACUATE"
}
}
// SetMode sets mode of the shard.
//
// Returns any error encountered that did not allow
// to set 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())
}