-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathstart.go
62 lines (57 loc) · 1.3 KB
/
start.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
package main
import (
"bufio"
"distributed-uid-generator/config"
"distributed-uid-generator/generator"
"fmt"
"github.com/julienschmidt/httprouter"
"io"
"net/http"
"os"
"strings"
)
var nextId generator.NextId
func genIdHandler(rw http.ResponseWriter, req *http.Request, params httprouter.Params) {
uid := nextId.GetNextId()
fmt.Println(uid)
fmt.Fprint(rw, uid)
}
// read config info to map
func readConfig(path string) map[string]string {
file,error := os.Open(path)
if (nil != error) {
panic("read config file error")
}
configMap := make(map[string]string)
reader := bufio.NewReader(file)
for {
line,_, readErr := reader.ReadLine()
if nil != readErr {
if (readErr == io.EOF) {
break
}
panic("read config file error")
}
lineStr := string(line)
index := strings.Index(lineStr, ":")
// get config key val
key := lineStr[:index]
val := lineStr[index+1:]
configMap[key] = val
}
return configMap
}
/**
* 启动函数
*/
func main() {
config := config.New()
dg := generator.New(1, config.EpochDate(), uint8(config.Timebit()), uint8(config.Workbit()), uint8(config.Sequencesbit()))
nextId = dg
router := httprouter.New()
router.GET("/gen/id", genIdHandler)
startError := http.ListenAndServe(":8080", router)
if nil != startError {
panic("server start up error")
}
}