mirror of https://github.com/poanetwork/gecko.git
45 lines
854 B
Go
45 lines
854 B
Go
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package snowman
|
|
|
|
import (
|
|
"github.com/ava-labs/gecko/ids"
|
|
"github.com/ava-labs/gecko/snow/consensus/snowman"
|
|
)
|
|
|
|
type issuer struct {
|
|
t *Transitive
|
|
blk snowman.Block
|
|
abandoned bool
|
|
deps ids.Set
|
|
}
|
|
|
|
func (i *issuer) Dependencies() ids.Set { return i.deps }
|
|
|
|
func (i *issuer) Fulfill(id ids.ID) {
|
|
i.deps.Remove(id)
|
|
i.Update()
|
|
}
|
|
|
|
func (i *issuer) Abandon(ids.ID) {
|
|
if !i.abandoned {
|
|
blkID := i.blk.ID()
|
|
i.t.pending.Remove(blkID)
|
|
i.t.blocked.Abandon(blkID)
|
|
|
|
// Tracks performance statistics
|
|
i.t.numBlkRequests.Set(float64(i.t.blkReqs.Len()))
|
|
i.t.numBlockedBlk.Set(float64(i.t.pending.Len()))
|
|
}
|
|
i.abandoned = true
|
|
}
|
|
|
|
func (i *issuer) Update() {
|
|
if i.abandoned || i.deps.Len() != 0 {
|
|
return
|
|
}
|
|
|
|
i.t.deliver(i.blk)
|
|
}
|