2017-10-10 01:39:21 -07:00
|
|
|
package types
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/tendermint/tendermint/types"
|
|
|
|
cmn "github.com/tendermint/tmlibs/common"
|
|
|
|
)
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
// PeerRoundState contains the known state of a peer.
|
|
|
|
// NOTE: Read-only when returned by PeerState.GetRoundState().
|
|
|
|
type PeerRoundState struct {
|
2017-11-30 11:08:38 -08:00
|
|
|
Height uint64 // Height peer is at
|
2017-10-10 01:39:21 -07:00
|
|
|
Round int // Round peer is at, -1 if unknown.
|
|
|
|
Step RoundStepType // Step peer is at
|
|
|
|
StartTime time.Time // Estimated start of round 0 at this height
|
|
|
|
Proposal bool // True if peer has proposal for this round
|
|
|
|
ProposalBlockPartsHeader types.PartSetHeader //
|
|
|
|
ProposalBlockParts *cmn.BitArray //
|
|
|
|
ProposalPOLRound int // Proposal's POL round. -1 if none.
|
|
|
|
ProposalPOL *cmn.BitArray // nil until ProposalPOLMessage received.
|
|
|
|
Prevotes *cmn.BitArray // All votes peer has for this round
|
|
|
|
Precommits *cmn.BitArray // All precommits peer has for this round
|
|
|
|
LastCommitRound int // Round of commit for last height. -1 if none.
|
|
|
|
LastCommit *cmn.BitArray // All commit precommits of commit for last height.
|
|
|
|
CatchupCommitRound int // Round that we have commit for. Not necessarily unique. -1 if none.
|
|
|
|
CatchupCommit *cmn.BitArray // All commit precommits peer has for this height & CatchupCommitRound
|
|
|
|
}
|
|
|
|
|
|
|
|
// String returns a string representation of the PeerRoundState
|
|
|
|
func (prs PeerRoundState) String() string {
|
|
|
|
return prs.StringIndented("")
|
|
|
|
}
|
|
|
|
|
|
|
|
// StringIndented returns a string representation of the PeerRoundState
|
|
|
|
func (prs PeerRoundState) StringIndented(indent string) string {
|
|
|
|
return fmt.Sprintf(`PeerRoundState{
|
|
|
|
%s %v/%v/%v @%v
|
|
|
|
%s Proposal %v -> %v
|
|
|
|
%s POL %v (round %v)
|
|
|
|
%s Prevotes %v
|
|
|
|
%s Precommits %v
|
|
|
|
%s LastCommit %v (round %v)
|
|
|
|
%s Catchup %v (round %v)
|
|
|
|
%s}`,
|
|
|
|
indent, prs.Height, prs.Round, prs.Step, prs.StartTime,
|
|
|
|
indent, prs.ProposalBlockPartsHeader, prs.ProposalBlockParts,
|
|
|
|
indent, prs.ProposalPOL, prs.ProposalPOLRound,
|
|
|
|
indent, prs.Prevotes,
|
|
|
|
indent, prs.Precommits,
|
|
|
|
indent, prs.LastCommit, prs.LastCommitRound,
|
|
|
|
indent, prs.CatchupCommit, prs.CatchupCommitRound,
|
|
|
|
indent)
|
|
|
|
}
|