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); }
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."); }
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."); }
bool Contenedor::hay_lugar(const Equipaje& e) { if(this->cant_equipajes == MAX_VALIJAS_POR_CONTENEDOR){ return false; } return (e.peso() + peso <= MAX_PESO_CONTENEDOR); }