forked from Terry-Mao/goim
/
main.go
51 lines (48 loc) · 1.1 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
package main
import (
log "code.google.com/p/log4go"
"flag"
"github.com/Terry-Mao/goim/libs/perf"
"runtime"
)
var (
DefaultServer *Server
)
func main() {
flag.Parse()
if err := InitConfig(); err != nil {
panic(err)
}
runtime.GOMAXPROCS(Conf.MaxProc)
log.LoadConfiguration(Conf.Log)
defer log.Close()
log.Info("comet[%s] start", Ver)
perf.Init(Conf.PprofBind)
// logic rpc
if err := InitLogicRpc(Conf.LogicNetwork, Conf.LogicAddr); err != nil {
log.Warn("logic rpc current can't connect, retry")
}
// new server
buckets := make([]*Bucket, Conf.Bucket)
for i := 0; i < Conf.Bucket; i++ {
buckets[i] = NewBucket(Conf.Channel, Conf.CliProto, Conf.SvrProto)
}
round := NewRound(Conf.ReadBuf, Conf.WriteBuf, Conf.Timer, Conf.TimerSize)
operator := new(DefaultOperator)
DefaultServer = NewServer(buckets, round, operator)
if err := InitTCP(); err != nil {
panic(err)
}
if err := InitWebsocket(); err != nil {
panic(err)
}
if err := InitHTTP(); err != nil {
panic(err)
}
// start rpc
if err := InitRPCPush(); err != nil {
panic(err)
}
// block until a signal is received.
InitSignal()
}