Skip to content

Commit

Permalink
rules: replace some global vars with constants
Browse files Browse the repository at this point in the history
  • Loading branch information
James DeFelice committed Jun 13, 2017
1 parent 9a4f274 commit ca2822b
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 21 deletions.
2 changes: 1 addition & 1 deletion api/v1/cmd/example-scheduler/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func Run(cfg Config) error {
// buildEventHandler generates and returns a handler to process events received from the subscription.
func buildEventHandler(state *internalState, fidStore store.Singleton) events.Handler {
// disable brief logs when verbose logs are enabled (there's no sense logging twice!)
logger := controller.LogEvents().Unless(state.config.verbose)
logger := controller.LogEvents(nil).Unless(state.config.verbose)
return eventrules.Concat(
logAllEvents().If(state.config.verbose),
eventMetrics(state.metricsAPI, time.Now, state.config.summaryMetrics),
Expand Down
2 changes: 1 addition & 1 deletion api/v1/cmd/msh/msh.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func buildClient() calls.Caller {
}

func buildEventHandler(caller calls.Caller) events.Handler {
logger := controller.LogEvents()
logger := controller.LogEvents(nil)
return controller.LiftErrors().Handle(events.Handlers{
scheduler.Event_SUBSCRIBED: eventrules.Rules{logger, controller.TrackSubscription(fidStore, 0)},
scheduler.Event_OFFERS: maybeDeclineOffers(caller).AndThen().Handle(resourceOffers(caller)),
Expand Down
8 changes: 5 additions & 3 deletions api/v1/lib/executor/events/events_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@ type (
// HandleEvent implements Handler for HandlerFunc
func (f HandlerFunc) HandleEvent(ctx context.Context, e *executor.Event) error { return f(ctx, e) }

var noopHandler = func(_ context.Context, _ *executor.Event) error { return nil }
type noopHandler int

// NoopHandler returns a HandlerFunc that does nothing and always returns nil
func NoopHandler() HandlerFunc { return noopHandler }
func (_ noopHandler) HandleEvent(_ context.Context, _ *executor.Event) error { return nil }

// NoopHandler is a Handler that does nothing and always returns nil
const NoopHandler = noopHandler(0)

// HandleEvent implements Handler for Handlers
func (hs Handlers) HandleEvent(ctx context.Context, e *executor.Event) (err error) {
Expand Down
8 changes: 5 additions & 3 deletions api/v1/lib/extras/gen/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,12 @@ type (
// HandleEvent implements Handler for HandlerFunc
func (f HandlerFunc) HandleEvent(ctx context.Context, e {{.Type "E"}}) error { return f(ctx, e) }
var noopHandler = func(_ context.Context, _ {{.Type "E"}}) error { return nil }
type noopHandler int
// NoopHandler returns a HandlerFunc that does nothing and always returns nil
func NoopHandler() HandlerFunc { return noopHandler }
func (_ noopHandler) HandleEvent(_ context.Context, _ {{.Type "E"}}) error { return nil }
// NoopHandler is a Handler that does nothing and always returns nil
const NoopHandler = noopHandler(0)
// HandleEvent implements Handler for Handlers
func (hs Handlers) HandleEvent(ctx context.Context, e {{.Type "E"}}) (err error) {
Expand Down
6 changes: 4 additions & 2 deletions api/v1/lib/extras/scheduler/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,5 +146,7 @@ func eventLoop(ctx context.Context, config Config, eventDecoder encoding.Decoder
return err
}

// DefaultHandler defaults to events.NoopHandler
var DefaultHandler = events.NoopHandler()
// DefaultHandler is invoked when no other handlers have been defined for the controller.
// The current implementation does nothing.
// TODO(jdef) a smarter default impl would decline all offers so as to avoid resource hoarding.
const DefaultHandler = events.NoopHandler
23 changes: 15 additions & 8 deletions api/v1/lib/extras/scheduler/controller/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,17 +113,24 @@ func AckStatusUpdatesF(callerLookup func() calls.Caller) Rule {
}
}

var (
// EventLabel is, by default, logged as the first argument by EventLogger
EventLabel = "event"
// EventLogger is the logger used by the LogEvents rule generator
EventLogger = func(e *scheduler.Event) { log.Println(EventLabel, e) }
)
// DefaultEventLabel is, by default, logged as the first argument by DefaultEventLogger
const DefaultEventLabel = "event"

// DefaultEventLogger logs the event via the `log` package.
func DefaultEventLogger(eventLabel string) func(*scheduler.Event) {
if eventLabel == "" {
return func(e *scheduler.Event) { log.Println(e) }
}
return func(e *scheduler.Event) { log.Println(eventLabel, e) }
}

// LogEvents returns a rule that logs scheduler events to the EventLogger
func LogEvents() Rule {
func LogEvents(f func(*scheduler.Event)) Rule {
if f == nil {
f = DefaultEventLogger(DefaultEventLabel)
}
return Rule(func(ctx context.Context, e *scheduler.Event, err error, chain Chain) (context.Context, *scheduler.Event, error) {
EventLogger(e)
f(e)
return chain(ctx, e, err)
})
}
8 changes: 5 additions & 3 deletions api/v1/lib/scheduler/events/events_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@ type (
// HandleEvent implements Handler for HandlerFunc
func (f HandlerFunc) HandleEvent(ctx context.Context, e *scheduler.Event) error { return f(ctx, e) }

var noopHandler = func(_ context.Context, _ *scheduler.Event) error { return nil }
type noopHandler int

// NoopHandler returns a HandlerFunc that does nothing and always returns nil
func NoopHandler() HandlerFunc { return noopHandler }
func (_ noopHandler) HandleEvent(_ context.Context, _ *scheduler.Event) error { return nil }

// NoopHandler is a Handler that does nothing and always returns nil
const NoopHandler = noopHandler(0)

// HandleEvent implements Handler for Handlers
func (hs Handlers) HandleEvent(ctx context.Context, e *scheduler.Event) (err error) {
Expand Down

0 comments on commit ca2822b

Please sign in to comment.