func (ss *StorageServer) RegisterServer( args *sp.RegisterArgs, reply *sp.RegisterReply) error { lsplog.Vlogf(3, "[StorageServer] RegisterServer invoked\n") if ss.ismaster == false { lsplog.Vlogf(2, "[StorageServer] calling non-master node for register\n") return lsplog.MakeErr("calling non-master node for register") } ss.mu.Lock() defer ss.mu.Unlock() if _, ok := ss.nodes[args.ServerInfo]; !ok { ss.nodes[args.ServerInfo] = true } reply.Ready = false if ss.numnodes == len(ss.nodes) { reply.Ready = true for node, _ := range ss.nodes { reply.Servers = append(reply.Servers, node) } } return nil }
func (ss *StorageServer) GetServers(args *sp.GetServersArgs, reply *sp.RegisterReply) error { lsplog.Vlogf(3, "[StorageServer] GetServers invoked\n") if ss.ismaster == false { lsplog.Vlogf(2, "[StorageServer] calling non-master node for GetServers\n") return lsplog.MakeErr("calling non-master node for GetServers") } ss.mu.RLock() defer ss.mu.RUnlock() if ss.numnodes != len(ss.nodes) { reply.Ready = false return nil } for node, _ := range ss.nodes { reply.Servers = append(reply.Servers, node) } reply.Ready = true return nil }