()
| 111 | } |
| 112 | |
| 113 | func (self *Syncer) run() { |
| 114 | self.server.quitWg.Add(1) |
| 115 | defer self.server.quitWg.Done() |
| 116 | |
| 117 | for { |
| 118 | select { |
| 119 | case <-self.syncCheckReqC: |
| 120 | case req := <-self.blockSyncReqC: |
| 121 | if req.targetBlockNum == 0 { |
| 122 | // cancel fetcher for peer |
| 123 | for _, id := range req.targetPeers { |
| 124 | self.cancelFetcherForPeer(self.peers[id]) |
| 125 | } |
| 126 | continue |
| 127 | } |
| 128 | |
| 129 | log.Infof("server %d, got sync req(%d, %d) to %v", |
| 130 | self.server.Index, req.startBlockNum, req.targetBlockNum, req.targetPeers) |
| 131 | if req.startBlockNum <= self.server.GetCommittedBlockNo() { |
| 132 | req.startBlockNum = self.server.GetCommittedBlockNo() + 1 |
| 133 | log.Infof("server %d, sync req start change to %d", |
| 134 | self.server.Index, req.startBlockNum) |
| 135 | } |
| 136 | for ; req.startBlockNum <= req.targetBlockNum; req.startBlockNum++ { |
| 137 | blk, _ := self.server.blockPool.getSealedBlock(req.startBlockNum) |
| 138 | if blk == nil { |
| 139 | log.Infof("server %d, on starting syncing %d, nil block from ledger", |
| 140 | self.server.Index, req.startBlockNum) |
| 141 | break |
| 142 | } |
| 143 | if err := self.server.fastForwardBlock(blk); err != nil { |
| 144 | log.Infof("server %d, on starting syncing %d, %s", |
| 145 | self.server.Index, req.startBlockNum, err) |
| 146 | break |
| 147 | } |
| 148 | } |
| 149 | if req.startBlockNum > req.targetBlockNum { |
| 150 | continue |
| 151 | } |
| 152 | self.onNewBlockSyncReq(req) |
| 153 | |
| 154 | case syncMsg := <-self.syncMsgC: |
| 155 | if p, present := self.peers[syncMsg.fromPeer]; present { |
| 156 | if p.active { |
| 157 | p.msgC <- syncMsg.msg |
| 158 | } else { |
| 159 | // report err |
| 160 | p.msgC <- nil |
| 161 | } |
| 162 | } else { |
| 163 | // report error |
| 164 | } |
| 165 | |
| 166 | case blkMsgFromPeer := <-self.blockFromPeerC: |
| 167 | blkNum := blkMsgFromPeer.block.getBlockNum() |
| 168 | if blkNum < self.nextReqBlkNum { |
| 169 | continue |
| 170 | } |
no test coverage detected