mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
This commit fixes the following golint warnings: pkg/bus/bus.go:64:9: if block ends with a return statement, so drop this else and outdent its block pkg/bus/bus.go:84:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:137:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:177:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:183:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:199:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:208:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/components/dynmap/dynmap.go:236:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:242:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:257:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:263:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:278:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:284:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:299:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:331:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:350:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:356:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:366:12: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:390:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:396:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:405:12: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:427:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:433:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:442:12: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:459:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:465:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:474:12: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:491:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:497:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:506:12: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:523:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:529:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:538:12: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:555:9: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:561:10: if block ends with a return statement, so drop this else and outdent its block pkg/components/dynmap/dynmap.go:570:12: if block ends with a return statement, so drop this else and outdent its block pkg/login/ldap.go:55:11: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/login/ldap_test.go:372:10: if block ends with a return statement, so drop this else and outdent its block pkg/middleware/middleware_test.go:213:12: if block ends with a return statement, so drop this else and outdent its block pkg/plugins/dashboard_importer.go:153:11: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/plugins/dashboards_updater.go:39:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/plugins/dashboards_updater.go:121:10: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/plugins/plugins.go:210:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/plugins/plugins.go:235:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/eval_context.go:111:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/notifier.go:92:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/notifier.go:98:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/notifier.go:122:10: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/rule.go:108:10: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/rule.go:118:10: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/rule.go:121:11: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/alerting/notifiers/telegram.go:94:10: if block ends with a return statement, so drop this else and outdent its block pkg/services/sqlstore/annotation.go:34:11: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/sqlstore/annotation.go:99:11: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/sqlstore/dashboard_test.go:107:13: if block ends with a return statement, so drop this else and outdent its block pkg/services/sqlstore/plugin_setting.go:78:10: if block ends with a return statement, so drop this else and outdent its block pkg/services/sqlstore/preferences.go:91:10: if block ends with a return statement, so drop this else and outdent its block pkg/services/sqlstore/user.go:50:10: if block ends with a return statement, so drop this else and outdent its block pkg/services/sqlstore/migrator/migrator.go:106:11: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/services/sqlstore/migrator/postgres_dialect.go:48:10: if block ends with a return statement, so drop this else and outdent its block pkg/tsdb/time_range.go:59:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/tsdb/time_range.go:67:9: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary) pkg/tsdb/cloudwatch/metric_find_query.go:225:9: if block ends with a return statement, so drop this else and outdent its block pkg/util/filepath.go:68:11: if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary)
173 lines
3.8 KiB
Go
173 lines
3.8 KiB
Go
package bus
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"reflect"
|
|
)
|
|
|
|
type HandlerFunc interface{}
|
|
type CtxHandlerFunc func()
|
|
type Msg interface{}
|
|
|
|
var ErrHandlerNotFound = errors.New("handler not found")
|
|
|
|
type Bus interface {
|
|
Dispatch(msg Msg) error
|
|
DispatchCtx(ctx context.Context, msg Msg) error
|
|
Publish(msg Msg) error
|
|
|
|
AddHandler(handler HandlerFunc)
|
|
AddCtxHandler(handler HandlerFunc)
|
|
AddEventListener(handler HandlerFunc)
|
|
AddWildcardListener(handler HandlerFunc)
|
|
}
|
|
|
|
type InProcBus struct {
|
|
handlers map[string]HandlerFunc
|
|
listeners map[string][]HandlerFunc
|
|
wildcardListeners []HandlerFunc
|
|
}
|
|
|
|
// temp stuff, not sure how to handle bus instance, and init yet
|
|
var globalBus = New()
|
|
|
|
func New() Bus {
|
|
bus := &InProcBus{}
|
|
bus.handlers = make(map[string]HandlerFunc)
|
|
bus.listeners = make(map[string][]HandlerFunc)
|
|
bus.wildcardListeners = make([]HandlerFunc, 0)
|
|
return bus
|
|
}
|
|
|
|
// Want to get rid of global bus
|
|
func GetBus() Bus {
|
|
return globalBus
|
|
}
|
|
|
|
func (b *InProcBus) DispatchCtx(ctx context.Context, msg Msg) error {
|
|
var msgName = reflect.TypeOf(msg).Elem().Name()
|
|
|
|
var handler = b.handlers[msgName]
|
|
if handler == nil {
|
|
return ErrHandlerNotFound
|
|
}
|
|
|
|
var params = make([]reflect.Value, 2)
|
|
params[0] = reflect.ValueOf(ctx)
|
|
params[1] = reflect.ValueOf(msg)
|
|
|
|
ret := reflect.ValueOf(handler).Call(params)
|
|
err := ret[0].Interface()
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return err.(error)
|
|
}
|
|
|
|
func (b *InProcBus) Dispatch(msg Msg) error {
|
|
var msgName = reflect.TypeOf(msg).Elem().Name()
|
|
|
|
var handler = b.handlers[msgName]
|
|
if handler == nil {
|
|
return ErrHandlerNotFound
|
|
}
|
|
|
|
var params = make([]reflect.Value, 1)
|
|
params[0] = reflect.ValueOf(msg)
|
|
|
|
ret := reflect.ValueOf(handler).Call(params)
|
|
err := ret[0].Interface()
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return err.(error)
|
|
}
|
|
|
|
func (b *InProcBus) Publish(msg Msg) error {
|
|
var msgName = reflect.TypeOf(msg).Elem().Name()
|
|
var listeners = b.listeners[msgName]
|
|
|
|
var params = make([]reflect.Value, 1)
|
|
params[0] = reflect.ValueOf(msg)
|
|
|
|
for _, listenerHandler := range listeners {
|
|
ret := reflect.ValueOf(listenerHandler).Call(params)
|
|
err := ret[0].Interface()
|
|
if err != nil {
|
|
return err.(error)
|
|
}
|
|
}
|
|
|
|
for _, listenerHandler := range b.wildcardListeners {
|
|
ret := reflect.ValueOf(listenerHandler).Call(params)
|
|
err := ret[0].Interface()
|
|
if err != nil {
|
|
return err.(error)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (b *InProcBus) AddWildcardListener(handler HandlerFunc) {
|
|
b.wildcardListeners = append(b.wildcardListeners, handler)
|
|
}
|
|
|
|
func (b *InProcBus) AddHandler(handler HandlerFunc) {
|
|
handlerType := reflect.TypeOf(handler)
|
|
queryTypeName := handlerType.In(0).Elem().Name()
|
|
b.handlers[queryTypeName] = handler
|
|
}
|
|
|
|
func (b *InProcBus) AddCtxHandler(handler HandlerFunc) {
|
|
handlerType := reflect.TypeOf(handler)
|
|
queryTypeName := handlerType.In(1).Elem().Name()
|
|
b.handlers[queryTypeName] = handler
|
|
}
|
|
|
|
func (b *InProcBus) AddEventListener(handler HandlerFunc) {
|
|
handlerType := reflect.TypeOf(handler)
|
|
eventName := handlerType.In(0).Elem().Name()
|
|
_, exists := b.listeners[eventName]
|
|
if !exists {
|
|
b.listeners[eventName] = make([]HandlerFunc, 0)
|
|
}
|
|
b.listeners[eventName] = append(b.listeners[eventName], handler)
|
|
}
|
|
|
|
// Package level functions
|
|
func AddHandler(implName string, handler HandlerFunc) {
|
|
globalBus.AddHandler(handler)
|
|
}
|
|
|
|
// Package level functions
|
|
func AddCtxHandler(implName string, handler HandlerFunc) {
|
|
globalBus.AddCtxHandler(handler)
|
|
}
|
|
|
|
// Package level functions
|
|
func AddEventListener(handler HandlerFunc) {
|
|
globalBus.AddEventListener(handler)
|
|
}
|
|
|
|
func AddWildcardListener(handler HandlerFunc) {
|
|
globalBus.AddWildcardListener(handler)
|
|
}
|
|
|
|
func Dispatch(msg Msg) error {
|
|
return globalBus.Dispatch(msg)
|
|
}
|
|
|
|
func DispatchCtx(ctx context.Context, msg Msg) error {
|
|
return globalBus.DispatchCtx(ctx, msg)
|
|
}
|
|
|
|
func Publish(msg Msg) error {
|
|
return globalBus.Publish(msg)
|
|
}
|
|
|
|
func ClearBusHandlers() {
|
|
globalBus = New()
|
|
}
|