void Cliente::consultarBaseDeDatos(const std::string &nombre, const std::string &direccion, const std::string &telefono) { colaRequests.escribir( armarRequest(nombre,direccion,telefono,true) ); respInicial cantidadDeMatches; colaResponses.leer(getpid(), &cantidadDeMatches); std::cout << cantidadDeMatches.matches << " matches." << std::endl; for(int i=0 ; i < cantidadDeMatches.matches; ++i ) { response r; colaResponses.leer(getpid(),&r); std::cout << Registro(r.reg) << std::endl; } }
void Servidor::atenderClientes() { try { request req; do { colaRequests.leer(0,&req); if(req.leo) { int pid = req.mtype; std::vector<Registro> matches = bd.buscar(Registro(req.reg)); enviarRespuestas(matches,pid); } else { bd.guardar(Registro(req.reg)); } } while(!hayQueSalir()); } catch (Common::InterruptException &e) { } }
Registro getRecord(vector<string> vec,bool &valid, bool &nombre,bool &direccion, bool &telefono){ string nom; string tel; string dir; valid=true; nombre=direccion=telefono=false; unsigned int i=1; while (valid && i<vec.size()){ bool parametroValido=((vec[i]==NAME_INPUT)||(vec[i]==ADR_INPUT)||(vec[i]==TEL_INPUT)); bool proximoValido=((i+1<vec.size()) && (vec[i+1]!=NAME_INPUT) && (vec[i+1]!=ADR_INPUT) && (vec[i+1]!=TEL_INPUT)); if(parametroValido){ if (proximoValido){ if(vec[i]==NAME_INPUT){ nom = vec[i+1]; nombre=true; }else if(vec[i]==ADR_INPUT){ dir = vec[i+1]; direccion=true; }else if(vec[i]==TEL_INPUT){ tel = vec[i+1]; telefono=true; } }else{ cout<<MISSING_ARGUMENT_MESSAGE<<vec[i]<<endl; valid=false; } }else{ cout<<INVALID_PARAMETER_MESSAGE<<vec[i]<<endl; valid=false; } i+=2; } return Registro(nom,dir,tel); }