mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-05 21:56:50 +00:00

* [NOD-1126] Implement block relay flow * [NOD-1126] Add StartGetRelayBlocksListener * [NOD-1126] Implement block relay flow * [NOD-1126] Integrate with new interface * [NOD-1126] Fix comments * [NOD-1126] Refactor protocol.go * [NOD-1126] Split long lines * [NOD-1126] Fix comment * [NOD-1126] move sharedRequestedBlocks to a separate file * [NOD-1126] Fix error message * [NOD-1126] Move handleInv to StartBlockRelay * [NOD-1126] Create hashesQueueSet type * [NOD-1126] Make deleteFromRequestedBlocks a method * [NOD-1126] Fix comment * [NOD-1126] Add block logger * [NOD-1126] Rename advertisedProtoVer->advertisedProtocolVer * [NOD-1126] Fix comment and an error message * [NOD-1126] Remove redundant loop * [NOD-1126] Move requestBlocks upper * [NOD-1126] Remove exiting blocks in requestedBlocks from hashesToRequest * [NOD-1126] Change comment * [NOD-1126] Rename stallResponseTimeout->timeout * [NOD-1126] Use switch inside readMsgBlock * [NOD-1126] Fix error message and remove redundant log * [NOD-1126] Rename pacakge names * [NOD-1126] Fix comment * [NOD-1126] Change file names * [NOD-1126] Convert block to partial if needed * [NOD-1126] Remove function redeclaration * [NOD-1126] continue instead of return * [NOD-1126] Rename LogBlockBlueScore->LogBlock * [NOD-1126] Add minimum functions to utils * [NOD-1126] Flip condition on readInv * [NOD-1126] Rename utilMath->mathUtil * [NOD-1126] Fix comment
36 lines
737 B
Go
36 lines
737 B
Go
package handlerelayinvs
|
|
|
|
import "github.com/kaspanet/kaspad/util/daghash"
|
|
|
|
type hashesQueueSet struct {
|
|
queue []*daghash.Hash
|
|
set map[daghash.Hash]struct{}
|
|
}
|
|
|
|
func (r *hashesQueueSet) enqueueIfNotExists(hash *daghash.Hash) {
|
|
if _, ok := r.set[*hash]; !ok {
|
|
return
|
|
}
|
|
r.queue = append(r.queue, hash)
|
|
r.set[*hash] = struct{}{}
|
|
}
|
|
|
|
func (r *hashesQueueSet) dequeue(numItems int) []*daghash.Hash {
|
|
var hashes []*daghash.Hash
|
|
hashes, r.queue = r.queue[:numItems], r.queue[numItems:]
|
|
for _, hash := range hashes {
|
|
delete(r.set, *hash)
|
|
}
|
|
return hashes
|
|
}
|
|
|
|
func (r *hashesQueueSet) len() int {
|
|
return len(r.queue)
|
|
}
|
|
|
|
func newHashesQueueSet() *hashesQueueSet {
|
|
return &hashesQueueSet{
|
|
set: make(map[daghash.Hash]struct{}),
|
|
}
|
|
}
|