29 lines
554 B
Go
29 lines
554 B
Go
package jobdef
|
|
|
|
type Registry struct {
|
|
items map[string]Handler
|
|
}
|
|
|
|
func NewRegistry(handlers ...Handler) *Registry {
|
|
items := make(map[string]Handler, len(handlers))
|
|
for _, handler := range handlers {
|
|
items[handler.Key()] = handler
|
|
}
|
|
|
|
return &Registry{items: items}
|
|
}
|
|
|
|
func (r *Registry) Get(key string) (Handler, bool) {
|
|
handler, ok := r.items[key]
|
|
return handler, ok
|
|
}
|
|
|
|
func (r *Registry) List() []Handler {
|
|
result := make([]Handler, 0, len(r.items))
|
|
for _, handler := range r.items {
|
|
result = append(result, handler)
|
|
}
|
|
|
|
return result
|
|
}
|