3
0

Define NextInverted on the graph

This commit is contained in:
Tomaž Jerman 2020-11-20 11:11:47 +01:00
parent 93a081d46c
commit f5ee8419d0
4 changed files with 12 additions and 5 deletions

View File

@ -78,15 +78,13 @@ func (b *graphBuilder) Build(ctx context.Context, rr ...resource.Interface) (*gr
}
}
g.invert()
// Do any dep. related preprocessing
var state *ResourceState
var err error
err = func() error {
for {
state, err = g.Next(ctx)
state, err = g.NextInverted(ctx)
if err != nil {
return err
} else if state == nil {

View File

@ -6,7 +6,7 @@ import (
type (
Provider interface {
Next(ctx context.Context) (*ResourceState, error)
NextInverted(ctx context.Context) (*ResourceState, error)
}
)

View File

@ -111,6 +111,15 @@ func (g *graph) Relink() {
}
}
func (g *graph) NextInverted(ctx context.Context) (s *ResourceState, err error) {
g.inverted = true
defer func() {
g.inverted = false
}()
return g.next(ctx, nil)
}
func (g *graph) Next(ctx context.Context) (s *ResourceState, err error) {
return g.next(ctx, nil)
}

View File

@ -128,7 +128,7 @@ func (se *storeEncoder) Encode(ctx context.Context, p envoy.Provider) error {
var e *envoy.ResourceState
return store.Tx(ctx, se.s, func(ctx context.Context, s store.Storer) (err error) {
for {
e, err = p.Next(ctx)
e, err = p.NextInverted(ctx)
if err != nil {
return err
}