6 log "github.com/sirupsen/logrus"
8 "github.com/vapor/netsync/peers"
9 "github.com/vapor/p2p/security"
12 type BlockProcessor interface {
13 process(chan struct{}, chan struct{}, *sync.WaitGroup)
16 type blockProcessor struct {
22 func newBlockProcessor(chain Chain, storage Storage, peers *peers.PeerSet) *blockProcessor {
23 return &blockProcessor{
30 func (bp *blockProcessor) insert(blockStorage *blockStorage) error {
31 isOrphan, err := bp.chain.ProcessBlock(blockStorage.block)
32 if err != nil || isOrphan {
33 bp.peers.ProcessIllegal(blockStorage.peerID, security.LevelMsgIllegal, err.Error())
38 func (bp *blockProcessor) process(downloadNotifyCh chan struct{}, ProcessStop chan struct{}, wg *sync.WaitGroup) {
46 nextHeight := bp.chain.BestBlockHeight() + 1
47 block, err := bp.storage.readBlock(nextHeight)
52 if err := bp.insert(block); err != nil {
53 log.WithFields(log.Fields{"module": logModule, "err": err}).Error("failed on process block")
57 bp.storage.deleteBlock(nextHeight)
60 if _, ok := <-downloadNotifyCh; !ok {