forked from sun8588/boboqueue
/
main.go
77 lines (70 loc) · 1.44 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
package main
import (
"Config"
"Store2"
"os"
// "Entity"
"Handle"
"Utils"
"log"
"net"
"os/signal"
"runtime"
"syscall"
)
/**
**/
func main() {
tcpAddr, err := net.ResolveTCPAddr("ip4", ":9800")
Utils.LogErr(err)
listener, err := net.ListenTCP("tcp", tcpAddr)
Utils.LogErr(err)
i := 0
readyData, waitData, err := Handle.LoadTask(Config.GetDataFile())
if err != nil {
Utils.LogErr(err)
return
}
log.Println("load data=%v", readyData)
for key, value := range *readyData {
log.Printf("load ready key=%s, data=%v\n", key, value)
}
for key, value := range *waitData {
log.Printf("load wait key=%s, data=%v\n", key, value)
}
// taskList := make([]Entity.Task, Config.GetRoomMaxNum())
runtime.GOMAXPROCS(runtime.NumCPU())
//go 程处理数据写入文件
go Store2.EntityDump(Config.GetTickTime())
//go程处理waittask检索
go Handle.CheckWaitTask(readyData, waitData)
go signalHandle()
for {
conn, err := listener.Accept()
if err != nil {
Utils.LogErr(err)
return
}
go Handle.HandleClient(readyData, waitData, conn)
// go Handle.Test(i,roomList, conn)
// roomChan <- roomList
i++
}
}
/**
信号量处理函数
**/
func signalHandle() {
for {
ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGINT, syscall.SIGUSR1)
sig := <-ch
Utils.LogInfo("Signal received: %v", sig)
switch sig {
case syscall.SIGINT:
os.Exit(1)
case syscall.SIGUSR1:
Config.ParseXml(Config.ConfigFile)
}
}
}