MCPcopy Create free account
hub / github.com/DNAProject/DNA / getHighestRankProposal

Method getHighestRankProposal

consensus/vbft/node_utils.go:166–192  ·  view source on GitHub ↗
(blockNum uint32, proposals []*blockProposalMsg)

Source from the content-addressed store, hash-verified

164}
165
166func (self *Server) getHighestRankProposal(blockNum uint32, proposals []*blockProposalMsg) *blockProposalMsg {
167 self.metaLock.RLock()
168 defer self.metaLock.RUnlock()
169
170 proposerRank := 10000
171 var proposal *blockProposalMsg
172 for _, p := range proposals {
173 if p.GetBlockNum() != blockNum {
174 log.Errorf("server %d, diff blockNum found when get highest rank proposal,blockNum:%d", self.Index, blockNum)
175 continue
176 }
177
178 if r := self.getProposerRankLocked(blockNum, p.Block.getProposer()); r < proposerRank {
179 proposerRank = r
180 proposal = p
181 }
182 }
183
184 if proposal == nil && len(proposals) > 0 {
185 for _, p := range proposals {
186 log.Errorf("blk %d, proposer %d", p.Block.getBlockNum(), p.Block.getProposer())
187 }
188 panic("ERR")
189 }
190
191 return proposal
192}
193
194//
195// call this method with metaLock locked

Callers 4

actionLoopMethod · 0.95
processTimerEventMethod · 0.95
handleProposalTimeoutMethod · 0.95

Calls 5

getProposerRankLockedMethod · 0.95
ErrorfFunction · 0.92
getProposerMethod · 0.80
getBlockNumMethod · 0.80
GetBlockNumMethod · 0.65

Tested by 1