Ejemplo n.º 1
0
void Contenedor::agregar_equipaje(const Equipaje& e) {
	if (!hay_lugar(e))
		throw std::runtime_error("Contenedor: no hay lugar en el contenedor.exceso de peso");

	if (cant_equipajes > MAX_VALIJAS_POR_CONTENEDOR)
		throw std::runtime_error(
				"Contenedor.no hay lugar en el contenedor.sobrepasa la cantidad de equipajes");

	equipajes[cant_equipajes] = e;
	cant_equipajes++;
	peso += e.peso();

	Log::info("Equipaje (%d) agregado al contenedor.tengo %d equipajes, peso total %d/%d",
			e.getRfid().rfid, cant_equipajes, peso, MAX_PESO_CONTENEDOR);

}
Ejemplo n.º 2
0
int main(int argc, char *argv [])
try
{
	int id_robot;
	if (argc < 3) {
		Log::crit(
			"Insuficientes parametros para scanner, se esperaba (directorio_de_trabajo, config_file, id)\n");
		return (1);
	}

	id_robot = atoi(argv [3]); // de 1 a N

	if (id_robot < 1) {
		Log::crit("ID de robot_scanner incorrecto %d\n", id_robot);
		exit(1);
	}

	CintaScanner<Equipaje> cinta_scanner(std::string("escaner").append(intToString(id_robot)).c_str(), argv [1],
		id_robot, id_robot);
	ApiScanner api_escaner_cinta_central(argv [1], argv [2], id_robot);

	Log::info("Iniciando scanner(%s), %s\n", argv [3], argv [4]);

	for (;;) {
		Log::info("Tomando equipaje de Cinta Scanner\n");
		Equipaje equipaje = cinta_scanner.sacar_equipaje();
		Log::info("Equipaje (%s) extraido de Cinta Scanner\n", equipaje.toString().c_str());

		Log::info("Escaneando equipaje %s\n", equipaje.toString().c_str());
		equipaje.set_sospechoso((rand() % CANT_SOSPECHOSOS) == 0);

		sleep(rand() % SLEEP_ROBOT_SCANNER);

		if (equipaje.es_sospechoso()) {
			Log::info("Equipaje sospechoso (%s)\n", equipaje.toString().c_str());
		} else {
			Log::info("Equipaje limpio (%s)\n", equipaje.toString().c_str());
		}

		Log::info("Coloco Equipaje (%s) en Cinta Principal\n", equipaje.toString().c_str());
		api_escaner_cinta_central.colocar_equipaje_en_cinta_principal(equipaje);
		Log::info("Equipaje (%s) colocado en Cinta Principal\n", equipaje.toString().c_str());
	}

}
catch (const std::exception &e) {
	std::cerr << e.what() << std::endl;
	Log::crit("%s", e.what());
}
catch (...) {
	Log::crit("Critical error. Unknow exception at the end of the 'main' function.");
}
Ejemplo n.º 3
0
int main(int argc, char *argv [])
try
{
	int id_robot;

	printf("Debuggeando robot_scanner\n");

	if (argc < 3) {
		Log::crit(
			"Insuficientes parametros para scanner, se esperaba (directorio_de_trabajo, config_file, id, id_cinta_scanner)\n");
		return (1);
	}

	id_robot = atoi(argv [3]); // de 1 a N

	if (id_robot < 1) {
		Log::crit("ID de robot_scanner incorrecto %d\n", id_robot);
		exit(1);
	}

	CintaScanner<Equipaje> cinta_scanner(std::string("escaner").append(intToString(id_robot)).c_str(), argv [1],
		id_robot, id_robot);
	//ApiScanner api_escaner_cinta_central(argv [1], argv [2], id_robot);

	Log::info("Iniciando scanner(%s), %s\n", argv [3], argv [4]);

	for (int i = 0 ; i < 2 ; i++) {
		printf("Extraer equipaje cinta scanner\n");
		Equipaje equipaje = cinta_scanner.sacar_equipaje();
		printf("Robot Scanner %d Equipaje extraido %s\n", id_robot, equipaje.toString().c_str());
	}
	printf("Robot Scanner %d Terminando\n", id_robot);
}
catch (const std::exception &e) {
	Log::crit("%s", e.what());
}
catch (...) {
	Log::crit("Critical error. Unknow exception at the end of the 'main' function.");
}
int main(int argc, char** argv)
try {

	if (argc < 2) {
		Log::crit(
				"Insuf parametros para robot de sospechosos,se esperaba (directorio_de_trabajo, pos_consumidor_cinta_central, pos_productor_cinta_central)\n");
		exit(1);
	}

	ApiControlEquipajes api_control_equipajes(argv[1], atoi(argv[2]), atoi(argv[3]));

	strcpy(id_consumidor, argv[2]);
	strcpy(id_productor, argv[3]);
	Process control_equipajes("control_equipaje_sospechoso", args_controlador_equipajes);

	Log::info("Iniciando robot control de equipaje sospechoso(pos=%s), cinta_central:%s\n", argv[1],
			argv[3]);

	for (;;) {
		sleep(rand() % SLEEP_ROBOT_SOSPECHOSOS);

		Log::info("esperando un equipaje sospechoso de cinta central(%s)\n", argv[1], argv[3]);
		Equipaje equipaje = api_control_equipajes.obtener_proximo_equipaje_sospechoso();

		Log::info("recibo equipaje %s y lo envío a control\n", argv[1],
				equipaje.toString().c_str());

		api_control_equipajes.enviar_equipaje_a_control(equipaje);
	}

}
catch (const std::exception &e) {
	Log::crit("%s", e.what());
}
catch (...) {
	Log::crit("Critical error. Unknow exception at the end of the 'main' function.");
}
Ejemplo n.º 5
0
bool Contenedor::hay_lugar(const Equipaje& e) {
	if(this->cant_equipajes == MAX_VALIJAS_POR_CONTENEDOR){
		return false;
	}
	return (e.peso() + peso <= MAX_PESO_CONTENEDOR);
}