MCPcopy
hub / github.com/tinode/chat / start

Method start

server/cluster.go:1046–1084  ·  view source on GitHub ↗

Start accepting connections.

()

Source from the content-addressed store, hash-verified

1044
1045// Start accepting connections.
1046func (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
1086func (c *Cluster) shutdown() {
1087 if globals.cluster == nil {

Callers 4

gen_messageFunction · 0.80
serialize_cmdFunction · 0.80
init_serverFunction · 0.80
mainFunction · 0.80

Calls 4

runMethod · 0.95
reconnectMethod · 0.80
asyncRpcLoopMethod · 0.80
p2mSenderLoopMethod · 0.80

Tested by

no test coverage detected