Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
| ... | ... |
@@ -43,6 +43,7 @@ func unregister(name string) {
|
| 43 | 43 |
// containers by executing *jobs*. |
| 44 | 44 |
type Engine struct {
|
| 45 | 45 |
handlers map[string]Handler |
| 46 |
+ catchall Handler |
|
| 46 | 47 |
hack Hack // data for temporary hackery (see hack.go) |
| 47 | 48 |
id string |
| 48 | 49 |
Stdout io.Writer |
| ... | ... |
@@ -60,6 +61,10 @@ func (eng *Engine) Register(name string, handler Handler) error {
|
| 60 | 60 |
return nil |
| 61 | 61 |
} |
| 62 | 62 |
|
| 63 |
+func (eng *Engine) RegisterCatchall(catchall Handler) {
|
|
| 64 |
+ eng.catchall = catchall |
|
| 65 |
+} |
|
| 66 |
+ |
|
| 63 | 67 |
// New initializes a new engine. |
| 64 | 68 |
func New() *Engine {
|
| 65 | 69 |
eng := &Engine{
|
| ... | ... |
@@ -113,9 +118,13 @@ func (eng *Engine) Job(name string, args ...string) *Job {
|
| 113 | 113 |
if eng.Logging {
|
| 114 | 114 |
job.Stderr.Add(utils.NopWriteCloser(eng.Stderr)) |
| 115 | 115 |
} |
| 116 |
- handler, exists := eng.handlers[name] |
|
| 117 |
- if exists {
|
|
| 118 |
- job.handler = handler |
|
| 116 |
+ if eng.catchall != nil {
|
|
| 117 |
+ job.handler = eng.catchall |
|
| 118 |
+ } else {
|
|
| 119 |
+ handler, exists := eng.handlers[name] |
|
| 120 |
+ if exists {
|
|
| 121 |
+ job.handler = handler |
|
| 122 |
+ } |
|
| 119 | 123 |
} |
| 120 | 124 |
return job |
| 121 | 125 |
} |