scheduler: adding static rank iterator
This commit is contained in:
parent
9943b83463
commit
f25bd47bda
|
@ -20,6 +20,7 @@ type RankIterator interface {
|
||||||
// FeasibleRankIterator is used to consume from a FeasibleIterator
|
// FeasibleRankIterator is used to consume from a FeasibleIterator
|
||||||
// and return an unranked node with base ranking.
|
// and return an unranked node with base ranking.
|
||||||
type FeasibleRankIterator struct {
|
type FeasibleRankIterator struct {
|
||||||
|
ctx Context
|
||||||
source FeasibleIterator
|
source FeasibleIterator
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,6 +28,7 @@ type FeasibleRankIterator struct {
|
||||||
// from a FeasibleIterator source.
|
// from a FeasibleIterator source.
|
||||||
func NewFeasibleRankIterator(ctx Context, source FeasibleIterator) *FeasibleRankIterator {
|
func NewFeasibleRankIterator(ctx Context, source FeasibleIterator) *FeasibleRankIterator {
|
||||||
iter := &FeasibleRankIterator{
|
iter := &FeasibleRankIterator{
|
||||||
|
ctx: ctx,
|
||||||
source: source,
|
source: source,
|
||||||
}
|
}
|
||||||
return iter
|
return iter
|
||||||
|
@ -40,6 +42,26 @@ func (iter *FeasibleRankIterator) Next() *RankedNode {
|
||||||
return ranked
|
return ranked
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StaticRankIterator is a RankIterator that returns a static set of results.
|
||||||
|
// This is largely only useful for testing.
|
||||||
|
type StaticRankIterator struct {
|
||||||
|
ctx Context
|
||||||
|
nodes []*RankedNode
|
||||||
|
offset int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (iter *StaticRankIterator) Next() *RankedNode {
|
||||||
|
// Check if exhausted
|
||||||
|
if iter.offset == len(iter.nodes) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the next offset
|
||||||
|
offset := iter.offset
|
||||||
|
iter.offset += 1
|
||||||
|
return iter.nodes[offset]
|
||||||
|
}
|
||||||
|
|
||||||
// BinPackIterator is a RankIterator that scores potential options
|
// BinPackIterator is a RankIterator that scores potential options
|
||||||
// based on a bin-packing algorithm.
|
// based on a bin-packing algorithm.
|
||||||
type BinPackIterator struct {
|
type BinPackIterator struct {
|
||||||
|
|
Loading…
Reference in New Issue