Start accepting connections.
()
| 1044 | |
| 1045 | // Start accepting connections. |
| 1046 | func (c *Cluster) start() { |
| 1047 | addr, err := net.ResolveTCPAddr("tcp", c.listenOn) |
| 1048 | if err != nil { |
| 1049 | logs.Err.Fatal(err) |
| 1050 | } |
| 1051 | |
| 1052 | c.inbound, err = net.ListenTCP("tcp", addr) |
| 1053 | |
| 1054 | if err != nil { |
| 1055 | logs.Err.Fatal(err) |
| 1056 | } |
| 1057 | |
| 1058 | var bufferSize = clusterProxyToMasterBuffer |
| 1059 | if len(c.nodes) > 2 { |
| 1060 | // Expand the buffer for larger (>3 node) clusters. |
| 1061 | bufferSize += clusterProxyToMasterBufferPerNode * (len(c.nodes) - 2) |
| 1062 | } |
| 1063 | for _, n := range c.nodes { |
| 1064 | go n.reconnect() |
| 1065 | n.rpcDone = make(chan *rpc.Call, len(c.nodes)*clusterRpcCompletionBuffer) |
| 1066 | n.p2mSender = make(chan *ClusterReq, bufferSize) |
| 1067 | go n.asyncRpcLoop() |
| 1068 | go n.p2mSenderLoop() |
| 1069 | } |
| 1070 | |
| 1071 | if c.fo != nil { |
| 1072 | go c.run() |
| 1073 | } |
| 1074 | |
| 1075 | err = rpc.Register(c) |
| 1076 | if err != nil { |
| 1077 | logs.Err.Fatal(err) |
| 1078 | } |
| 1079 | |
| 1080 | go rpc.Accept(c.inbound) |
| 1081 | |
| 1082 | logs.Info.Printf("Cluster of %d nodes initialized, node '%s' is listening on [%s]", len(globals.cluster.nodes)+1, |
| 1083 | globals.cluster.thisNodeName, c.listenOn) |
| 1084 | } |
| 1085 | |
| 1086 | func (c *Cluster) shutdown() { |
| 1087 | if globals.cluster == nil { |
no test coverage detected