github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/internal/pkg/gateway/event/blockiterator.go (about) 1 /* 2 Copyright hechain. All Rights Reserved. 3 SPDX-License-Identifier: Apache-2.0 4 */ 5 6 package event 7 8 import ( 9 "github.com/hechain20/hechain/common/ledger" 10 "github.com/hyperledger/fabric-protos-go/common" 11 "github.com/pkg/errors" 12 ) 13 14 type BlockIterator struct { 15 ledgerIter ledger.ResultsIterator 16 } 17 18 func NewBlockIterator(iterator ledger.ResultsIterator) *BlockIterator { 19 return &BlockIterator{ 20 ledgerIter: iterator, 21 } 22 } 23 24 func (iter *BlockIterator) Next() (*Block, error) { 25 result, err := iter.ledgerIter.Next() 26 if err != nil { 27 return nil, err 28 } 29 30 switch block := result.(type) { 31 case *common.Block: 32 return NewBlock(block), nil 33 default: 34 return nil, errors.Errorf("unexpected block type: %T", result) 35 } 36 } 37 38 func (iter *BlockIterator) Close() { 39 iter.ledgerIter.Close() 40 }