You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
900 B
55 lines
900 B
package consensus
|
|
|
|
import "fmt"
|
|
|
|
// Mode is the current
|
|
type Mode byte
|
|
|
|
const (
|
|
// Normal ..
|
|
Normal Mode = iota
|
|
// ViewChanging ..
|
|
ViewChanging
|
|
// Syncing ..
|
|
Syncing
|
|
// Listening ..
|
|
Listening
|
|
)
|
|
|
|
// FBFTPhase : different phases of consensus
|
|
type FBFTPhase byte
|
|
|
|
// Enum for FBFTPhase
|
|
const (
|
|
FBFTAnnounce FBFTPhase = iota
|
|
FBFTPrepare
|
|
FBFTCommit
|
|
)
|
|
|
|
var (
|
|
modeNames = map[Mode]string{
|
|
Normal: "Normal",
|
|
ViewChanging: "ViewChanging",
|
|
Syncing: "Syncing",
|
|
Listening: "Listening",
|
|
}
|
|
phaseNames = map[FBFTPhase]string{
|
|
FBFTAnnounce: "Announce",
|
|
FBFTPrepare: "Prepare",
|
|
FBFTCommit: "Commit",
|
|
}
|
|
)
|
|
|
|
func (m Mode) String() string {
|
|
if name, ok := modeNames[m]; ok {
|
|
return name
|
|
}
|
|
return fmt.Sprintf("Mode %+v", byte(m))
|
|
}
|
|
|
|
func (p FBFTPhase) String() string {
|
|
if name, ok := phaseNames[p]; ok {
|
|
return name
|
|
}
|
|
return fmt.Sprintf("FBFTPhase %+v", byte(p))
|
|
}
|
|
|