-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
82 lines (71 loc) · 1.94 KB
/
main.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main
import (
"encoding/json"
"flag"
"github.com/golang/glog"
"gtask/cmd/http"
"gtask/internal/session"
"gtask/internal/task"
"gtask/pkg/restful"
"io/ioutil"
"os"
"runtime"
)
type Params struct {
cfgPath string
}
type Config struct {
Port uint32 `json:"listen_port"`
SecretKey string `json:"secret_key"`
DbPath string `json:"db_path"`
}
func readFiles(path string) ([]byte, error) {
f, err := os.Open(path)
if err != nil {
return nil, err
}
return ioutil.ReadAll(f)
}
func main() {
// 获取命令行参数
params := &Params{}
flag.StringVar(¶ms.cfgPath, "cfg", "./config/config.json", "config file. default './config/config.json'")
// 初始化日志信息
flag.Set("alsologtostderr", "true")
flag.Set("log_dir", "log")
flag.Parse()
defer func() {
glog.Flush()
}()
runtime.GOMAXPROCS(runtime.NumCPU())
content, err := readFiles(params.cfgPath)
if err != nil {
glog.Fatal(err)
}
cfg := &Config{}
err = json.Unmarshal(content, cfg)
if err != nil {
glog.Fatal(err)
}
session.Ins().Init(cfg.SecretKey)
// 随机生成一个token
session.Ins().GetToken(cfg.SecretKey)
task.Ins().Init(cfg.DbPath)
restfulServer := restful.NewRestful()
restfulServer.SetDefOpt(&restful.SchedulerOpt{UseCORS: true})
//restfulServer.Post("/task/start", http.StartTaskHandler)
//restfulServer.Post("/task/stop", http.StopTaskHandler)
restfulServer.Post("/task/job", http.CreateJobHandler)
restfulServer.Delete("/task/job", http.DeleteJobHandler)
restfulServer.Post("/task/job/run", http.RunJobHandler)
restfulServer.Post("/task/job/processor", http.CreateProcessorHandler)
restfulServer.Patch("/task", http.UpdateTaskHandler)
restfulServer.Patch("/task/job", http.UpdateJobHandler)
restfulServer.Get("/task/job", http.GetJobHandler)
restfulServer.Get("/session/token", http.GetToken)
glog.Infof("gtask running %d", cfg.Port)
restfulServer.Start(cfg.Port)
task.Ins().Stop()
task.Ins().Wait()
task.Ins().Release()
}