func (srv *Server) doRequest(conn *net.UnixConn) error { var buf bytes.Buffer _, err := io.Copy(&buf, conn) if err != nil { return err } // XXX support service deletion commands parts := strings.Split(strings.TrimSpace(buf.String()), " ") if len(parts) <= 0 { return fmt.Errorf("service specification should begin with port:ip-address") } addr, err := net.ResolveTCPAddr("tcp", parts[0]) if err != nil { return err } var insts []model.Instance for _, inst := range parts[1:] { addr, err := net.ResolveTCPAddr("tcp", inst) if err != nil { return err } insts = append(insts, model.MakeInstance(addr.IP, addr.Port)) } var update model.ServiceUpdate update.ServiceKey = model.MakeServiceKey("tcp", addr.IP, addr.Port) update.ServiceInfo = &model.ServiceInfo{} update.Instances = insts select { case srv.updates <- update: case <-srv.closed: } return nil }