示例#1
0
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;
	}
}
示例#2
0
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);
}