forked from nikepan/clickhouse-bulk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.go
61 lines (52 loc) · 1.45 KB
/
server.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
import (
"fmt"
"github.com/buaazp/fasthttprouter"
"github.com/valyala/fasthttp"
"log"
)
// Server - main server object
type Server struct {
Listen string
Collector *Collector
Debug bool
router *fasthttprouter.Router
}
// NewServer - create server
func NewServer(listen string, collector *Collector, debug bool) *Server {
return &Server{Listen: listen, Collector: collector, Debug: debug}
}
func (server *Server) writeHandler(c *fasthttp.RequestCtx) {
q := c.Request.Body()
s := string(q)
if server.Debug {
log.Printf("query %+v %+v\n", c.RequestURI(), s)
}
qs := string(c.RequestURI())
params, content, insert := server.Collector.ParseQuery(qs, s)
if insert {
go server.Collector.Push(params, content)
c.SetStatusCode(fasthttp.StatusOK)
fmt.Print(c, "")
} else {
resp, status := server.Collector.Sender.SendQuery(params, content)
c.SetStatusCode(status)
fmt.Print(c, resp)
}
}
func (server *Server) statusHandler(c *fasthttp.RequestCtx) {
c.SetStatusCode(fasthttp.StatusOK)
fmt.Fprintf(c, "%s", "Ok")
}
func (server *Server) Start() error {
return fasthttp.ListenAndServe(server.Listen, server.router.Handler)
}
// RunServer - run server
func InitServer(listen string, collector *Collector, debug bool) *Server {
server := NewServer(listen, collector, debug)
router := fasthttprouter.New()
router.POST("/", server.writeHandler)
router.GET("/status", server.statusHandler)
server.router = router
return server
}