1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

engine: allow registering a "catchall" handler which receives all commands

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
This commit is contained in:
Solomon Hykes 2014-04-24 00:36:21 -07:00
parent 9422451ac3
commit 68d3e75750

View file

@ -43,6 +43,7 @@ func unregister(name string) {
// containers by executing *jobs*. // containers by executing *jobs*.
type Engine struct { type Engine struct {
handlers map[string]Handler handlers map[string]Handler
catchall Handler
hack Hack // data for temporary hackery (see hack.go) hack Hack // data for temporary hackery (see hack.go)
id string id string
Stdout io.Writer Stdout io.Writer
@ -60,6 +61,10 @@ func (eng *Engine) Register(name string, handler Handler) error {
return nil return nil
} }
func (eng *Engine) RegisterCatchall(catchall Handler) {
eng.catchall = catchall
}
// New initializes a new engine. // New initializes a new engine.
func New() *Engine { func New() *Engine {
eng := &Engine{ eng := &Engine{
@ -113,10 +118,14 @@ func (eng *Engine) Job(name string, args ...string) *Job {
if eng.Logging { if eng.Logging {
job.Stderr.Add(utils.NopWriteCloser(eng.Stderr)) job.Stderr.Add(utils.NopWriteCloser(eng.Stderr))
} }
if eng.catchall != nil {
job.handler = eng.catchall
} else {
handler, exists := eng.handlers[name] handler, exists := eng.handlers[name]
if exists { if exists {
job.handler = handler job.handler = handler
} }
}
return job return job
} }