-
Notifications
You must be signed in to change notification settings - Fork 0
/
cluster.go
65 lines (53 loc) · 1.14 KB
/
cluster.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
package cluster
import (
"github.com/louhongfei123/niko/conf"
"github.com/louhongfei123/niko/network"
"math"
"time"
)
var (
server *network.TCPServer
clients []*network.TCPClient
)
func Init() {
if conf.ListenAddr != "" {
server = new(network.TCPServer)
server.Addr = conf.ListenAddr
server.MaxConnNum = int(math.MaxInt32)
server.PendingWriteNum = conf.PendingWriteNum
server.LenMsgLen = 4
server.MaxMsgLen = math.MaxUint32
server.NewAgent = newAgent
server.Start()
}
for _, addr := range conf.ConnAddrs {
client := new(network.TCPClient)
client.Addr = addr
client.ConnNum = 1
client.ConnectInterval = 3 * time.Second
client.PendingWriteNum = conf.PendingWriteNum
client.LenMsgLen = 4
client.MaxMsgLen = math.MaxUint32
client.NewAgent = newAgent
client.Start()
clients = append(clients, client)
}
}
func Destroy() {
if server != nil {
server.Close()
}
for _, client := range clients {
client.Close()
}
}
type Agent struct {
conn *network.TCPConn
}
func newAgent(conn *network.TCPConn) network.Agent {
a := new(Agent)
a.conn = conn
return a
}
func (a *Agent) Run() {}
func (a *Agent) OnClose() {}