-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQueryJob.go
47 lines (36 loc) · 1.04 KB
/
QueryJob.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package webcontext
import (
"log"
"net"
"net/http"
"time"
"github.com/ateleshev/go-queue"
)
func NewQueryJob(context *Context, responseWriter http.ResponseWriter, request *http.Request) *QueryJob { // {{{
job := &QueryJob{
Context: context,
Request: request,
ResponseWriter: responseWriter,
}
job.RemoteIp, _, _ = net.SplitHostPort(request.RemoteAddr)
job.Initialize()
return job
} // }}}
type QueryJob struct {
queue.Job
Context *Context
Request *http.Request
ResponseWriter http.ResponseWriter
RemoteIp string
}
func (this *QueryJob) Execute(w interface{}) { // {{{
worker := w.(*queue.Worker)
if this.Context.HasRouter() {
startedAt := time.Now()
this.Context.Router().ServeHTTP(this.ResponseWriter, this.Request)
finishedAt := time.Now()
go log.Printf("%s [%s] %s %v [%.4fs]\n", this.RemoteIp, worker.Info(), this.Request.Method, this.Request.URL, finishedAt.Sub(startedAt).Seconds())
} else {
go log.Printf("%s [%s:Error] Router not configured\n", this.RemoteIp, worker.Info())
}
} // }}}