MCPcopy Create free account
hub / github.com/CPChain/chain / New

Function New

protocols/cpc/fetcher/fetcher.go:148–172  ·  view source on GitHub ↗

New creates a block fetcher to retrieve blocks based on hash announcements.

(getBlock blockRetrievalFn, verifyHeader headerVerifierFn, broadcastBlock blockBroadcasterFn, chainHeight chainHeightFn, insertChain chainInsertFn, dropPeer peerDropFn)

Source from the content-addressed store, hash-verified

146
147// New creates a block fetcher to retrieve blocks based on hash announcements.
148func New(getBlock blockRetrievalFn, verifyHeader headerVerifierFn, broadcastBlock blockBroadcasterFn, chainHeight chainHeightFn, insertChain chainInsertFn, dropPeer peerDropFn) *Fetcher {
149 return &Fetcher{
150 notify: make(chan *announce),
151 inject: make(chan *inject),
152 blockFilter: make(chan chan []*types.Block),
153 headerFilter: make(chan chan *headerFilterTask),
154 bodyFilter: make(chan chan *bodyFilterTask),
155 done: make(chan common.Hash),
156 quit: make(chan struct{}),
157 announces: make(map[string]int),
158 announced: make(map[common.Hash][]*announce),
159 fetching: make(map[common.Hash]*announce),
160 fetched: make(map[common.Hash][]*announce),
161 completing: make(map[common.Hash]*announce),
162 queue: prque.New(),
163 queues: make(map[string]int),
164 queued: make(map[common.Hash]*inject),
165 getBlock: getBlock,
166 verifyHeader: verifyHeader,
167 broadcastBlock: broadcastBlock,
168 chainHeight: chainHeight,
169 insertChain: insertChain,
170 dropPeer: dropPeer,
171 }
172}
173
174// Start boots up the announcement based synchroniser, accepting and processing
175// hash notifications and block fetches until termination requested.

Callers 1

newTesterFunction · 0.70

Calls

no outgoing calls

Tested by 1

newTesterFunction · 0.56