Exemplo n.º 1
0
func handler() {
	jobs := make(map[string]*Job)
	for {
		var m batt.Message
		select {
		case <-time.After(nopDelay):
			out <- batt.Message{Verb: "nop"}
			continue
		case m = <-in:
		}
		if m.Verb == "nop" {
			continue // ignore
		}
		log.Println("received:", m)

		switch m.Verb {
		case "build":
			h := m.Get("h")
			j := NewJob(h)
			jobs[h] = j
			go j.Build(m.Get("path"), m.Get("platform"))
		case "accept":
			h := m.Get("h")
			j, ok := jobs[h]
			if !ok {
				log.Printf("unknown job %q", h)
				break
			}
			delete(jobs, h)
			go j.Accept(m.Get("url"))
		default:
			log.Printf("unknown verb %q", m.Verb)
		}
	}
}