065bd3f0be
This section contains genesis-related settings including genesis-related or natives-related extensions. Currently it includes the set of node roles that may be designated duing the native Designation contract initialisation. Close #3156. Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
39 lines
865 B
Go
39 lines
865 B
Go
package noderoles
|
|
|
|
//go:generate stringer -type=Role
|
|
|
|
// Role represents the type of the participant.
|
|
type Role byte
|
|
|
|
// Role enumeration.
|
|
const (
|
|
_ Role = 1 << iota
|
|
_
|
|
StateValidator
|
|
Oracle
|
|
NeoFSAlphabet
|
|
P2PNotary
|
|
// last denotes the end of roles enum. Consider adding new roles before the last.
|
|
last
|
|
)
|
|
|
|
// Roles is a set of all available roles sorted by values.
|
|
var Roles []Role
|
|
|
|
// roles is a map of valid Role string representation to its type.
|
|
var roles map[string]Role
|
|
|
|
func init() {
|
|
roles = make(map[string]Role)
|
|
for i := StateValidator; i < last; i = i << 1 {
|
|
roles[i.String()] = i
|
|
Roles = append(Roles, i)
|
|
}
|
|
}
|
|
|
|
// FromString returns a node role parsed from its string representation and a
|
|
// boolean value denoting whether the conversion was OK and the role exists.
|
|
func FromString(s string) (Role, bool) {
|
|
r, ok := roles[s]
|
|
return r, ok
|
|
}
|