MCPcopy Create free account
hub / github.com/CovenantSQL/CovenantSQL / processBlock

Method processBlock

cmd/cql-eth-exchange/exchange.go:286–330  ·  view source on GitHub ↗
(b *types.Block)

Source from the content-addressed store, hash-verified

284}
285
286func (e *Exchange) processBlock(b *types.Block) (err error) {
287 // set back to queue
288 defer func() {
289 if err != nil {
290 // set back to queue
291 go func() {
292 time.Sleep(time.Second)
293 e.newBlockCh <- b
294 }()
295 }
296 }()
297
298 blkNumber := b.NumberU64()
299
300 if blkNumber < atomic.LoadUint64(&e.currentBlock) {
301 // reorganize current block transactions
302 err = InvalidateTx(e.metaDatabase, blkNumber)
303 if err != nil {
304 return
305 }
306 }
307
308 // process transactions in block
309 for _, t := range b.Body().Transactions {
310 if !e.receiveAddrMap[t.To().String()] {
311 continue
312 }
313
314 // save to database
315 if _, err = e.saveTx(b.Number(), t); err != nil {
316 return
317 }
318 }
319
320 // process block complete, advance currentBlock
321 e.receivedBlockMap[blkNumber] = true
322
323 for i := atomic.LoadUint64(&e.currentBlock) + 1; e.receivedBlockMap[i]; i++ {
324 if atomic.CompareAndSwapUint64(&e.currentBlock, i-1, i) {
325 delete(e.receivedBlockMap, i)
326 }
327 }
328
329 return
330}
331
332func (e *Exchange) fetchBlock(head *types.Header) {
333 var (

Callers 1

processMethod · 0.95

Calls 3

saveTxMethod · 0.95
InvalidateTxFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected