diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 35 |
1 files changed, 25 insertions, 10 deletions
@@ -10,29 +10,30 @@ import ( func main() { rch := make(chan *WorkerRequest, 4096) mux := http.NewServeMux() + wrks := []*Worker{} for i := 0; i < 8; i++ { log.Printf("worker %d started\n", i) - w := NewWorker(rch) - err := w.Start("init.lua") + wrk := NewWorker(rch) + err := wrk.Start("init.lua") if err != nil { log.Fatal(err) } if i == 0 { - for _, route := range w.ListRoutes() { + for _, route := range wrk.ListRoutes() { // we need to copy route otherwise it's going // to change with every next iteration route := route mux.HandleFunc( route, - func (wr http.ResponseWriter, r *http.Request) { + func (w http.ResponseWriter, r *http.Request) { start := time.Now() - resCh := w.Request(route, r) + resCh := wrk.Request(route, r, *debug) res := <- resCh for k, h := range res.Headers { - wr.Header().Set(k, h) + w.Header().Set(k, h) } - wr.WriteHeader(int(res.Code)) - fmt.Fprint(wr, string(res.Body)) + w.WriteHeader(int(res.Code)) + fmt.Fprint(w, string(res.Body)) log.Printf( "%s %s (%s) -> %d\n", r.Method, @@ -44,9 +45,23 @@ func main() { ) } } - go w.Listen() - defer w.Stop() + wrks = append(wrks, wrk) + go wrk.Listen() + defer wrk.Stop() } + go func () { + reader := bufio.NewReader(os.Stdin) + for { + text, _ := reader.ReadString('\n') + for _, w := range wrks { + err := w.Eval(text) + if err != nil { + log.Printf("error: %s\n", err) + break + } + } + } + }() fmt.Println("luna is running...") log.Fatal(http.ListenAndServe("127.0.0.1:3002", mux)) } |
