int main(int argc, char* argv[]) { try { Logger::getInstance().setProcessInformation("Terminator Clientes:"); IPC::MsgQueue inputQueueDespacho("inputQueueDespacho"); inputQueueDespacho.getMsgQueue(DIRECTORY_DESPACHO, MSGQUEUE_DESPACHO_INPUT_ID); inputQueueDespacho.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueDespacho creado"); IPC::MsgQueue inputQueueCliente("inputQueueCliente"); inputQueueCliente.getMsgQueue(DIRECTORY_CLIENTE, MSGQUEUE_CLIENT_INPUT_ID); inputQueueCliente.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueCliente destruido"); IPC::MsgQueue R16_Cliente_Queue("R16_Cliente_Queue"); R16_Cliente_Queue.getMsgQueue(DIRECTORY_ROBOT_16, MSGQUEUE_R16_CLIENT_ID); R16_Cliente_Queue.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC R16_Cliente_Queue destruido"); IPC::VendedorLibreMessageQueue vendedores("Vendedores Msg Queue"); vendedores.getMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_VENDEDORES); vendedores.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC VendedorLibreMessageQueue destruido"); IPC::ClientesMessageQueue clientes("Clientes Msg Queue"); clientes.getMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_CLIENTES); clientes.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC ClientesMessageQueue destruido"); IPC::PedidosVendedorMessageQueue pedidos("Pedidos Msg Queue"); pedidos.getMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_PEDIDOS); pedidos.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC PedidosVendedorMessageQueue destruido"); } catch (Exception & e) { Logger::getInstance().logMessage(Logger::ERROR, e.get_error_description().c_str()); abort(); } }
int main(int argc, char* argv[]) { try { Logger::getInstance().setProcessInformation("Terminator:"); // Robot 5 IPC::Semaphore semaforoApiRobot5("Api robot 5"); semaforoApiRobot5.getSemaphore(DIRECTORY_ROBOT_5, ID_SEM_API_ROBOT_5, 1); semaforoApiRobot5.destroy(); // Robot 5 - Cinta IPC::MsgQueue colaCambioProducto("colaCambioProducto"); colaCambioProducto.getMsgQueue(DIRECTORY_ROBOT_5, ID_COLA_CAMBIO_PEDIDO); colaCambioProducto.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC colaCambioProducto creado"); IPC::PedidosProduccionMessageQueue colaPedidos("PedidosProduccionMessageQueue"); colaPedidos.getMessageQueue(DIRECTORY_ROBOT_5, ID_COLA_PEDIDOS_PRODUCCION); colaPedidos.destroy(); IPC::Semaphore semaforoAccesoEstadoRobot5("Estado Robot 5"); semaforoAccesoEstadoRobot5.getSemaphore(DIRECTORY_ROBOT_5, ID_ESTADO_ROBOT_5, 1); semaforoAccesoEstadoRobot5.destroy(); IPC::EstadoRobot5SharedMemory estadoRobot5ShMem("EstadoRobot5SharedMemory"); estadoRobot5ShMem.getSharedMemory(DIRECTORY_ROBOT_5, ID_ESTADO_ROBOT_5); estadoRobot5ShMem.destroy(); IPC::Semaphore semaforoBloqueoRobot5("Bloqueo Robot 5"); semaforoBloqueoRobot5.getSemaphore(DIRECTORY_ROBOT_5, ID_SEM_BLOQUEO_ROBOT_5, 1); semaforoBloqueoRobot5.destroy(); IPC::Semaphore semaforoBloqueoRobot11("Bloqueo Robot 11"); IPC::Semaphore semBloqueoRobot12("semBloqueoRobot12"); semaforoBloqueoRobot11.getSemaphore(DIRECTORY_ROBOT_11, ID_SEM_BLOQUEO_ROBOT_11, CANTIDAD_CINTAS_6); semBloqueoRobot12.getSemaphore(DIRECTORY_ROBOT_12, ID_SEM_BLOQUEO_ROBOT_12, CANTIDAD_CINTAS_6); semaforoBloqueoRobot11.destroy(); semBloqueoRobot12.destroy(); IPC::Semaphore semaforoAccesoCinta6("Acceso Cinta 6"); semaforoAccesoCinta6.getSemaphore(DIRECTORY_ROBOT_11, ID_SEM_CINTA_6, CANTIDAD_CINTAS_6); semaforoAccesoCinta6.destroy(); IPC::Cinta6SharedMemory cinta6_0("Cinta 6 Share dMemory 0"); cinta6_0.getSharedMemory(DIRECTORY_ROBOT_11, ID_CINTA_6_0); cinta6_0.destroy(); IPC::Cinta6SharedMemory cinta6_1("Cinta 6 Share dMemory 1"); cinta6_1.getSharedMemory(DIRECTORY_ROBOT_11, ID_CINTA_6_1); cinta6_1.destroy(); //Robot 5 - AGV IPC::BufferCanastoEntre5yAGVSharedMemory shMemPasajeCanastoEntre5yAGV1("BufferCanastoEntre5yAGVSharedMemory 0"); IPC::BufferCanastoEntre5yAGVSharedMemory shMemPasajeCanastoEntre5yAGV2("BufferCanastoEntre5yAGVSharedMemory 1"); IPC::BufferCanastoEntre5yAGVSharedMemory shMemPasajeCanastoEntre5yAGV3("BufferCanastoEntre5yAGVSharedMemory 2"); shMemPasajeCanastoEntre5yAGV1.getSharedMemory(DIRECTORY_AGV, ID_BUFFER_AGV_5_0); shMemPasajeCanastoEntre5yAGV2.getSharedMemory(DIRECTORY_AGV, ID_BUFFER_AGV_5_1); shMemPasajeCanastoEntre5yAGV3.getSharedMemory(DIRECTORY_AGV, ID_BUFFER_AGV_5_2); shMemPasajeCanastoEntre5yAGV1.destroy(); shMemPasajeCanastoEntre5yAGV2.destroy(); shMemPasajeCanastoEntre5yAGV3.destroy(); // Do the same with the semaphores IPC::Semaphore semBloqueoAGV("semBloqueoAGV"); IPC::Semaphore semBufferAGV_5("semBufferAGV_5"); IPC::Semaphore semBufferCanastos("semMemCanastos"); semBloqueoAGV.getSemaphore(DIRECTORY_AGV, ID_SEM_BLOQUEO_AGV, CANTIDAD_AGVS); semBloqueoAGV.destroy(); semBufferAGV_5.getSemaphore(DIRECTORY_AGV, ID_SEM_BUFFER_AGV_5, CANTIDAD_AGVS); semBufferAGV_5.destroy(); semBufferCanastos.getSemaphore(DIRECTORY_AGV, ID_SEM_BUFFER_CANASTOS, CANTIDAD_AGVS); semBufferCanastos.destroy(); // Do the same with the queues IPC::PedidosAgvMessageQueue colaPedidosAGV_5; colaPedidosAGV_5.getMessageQueue(DIRECTORY_AGV, ID_COLA_PEDIDOS_AGV_5); colaPedidosAGV_5.destroy(); // Robots cintas - AGV IPC::PedidosCanastosMessageQueue colaPedidosCanastos; colaPedidosCanastos.getMessageQueue(DIRECTORY_AGV, ID_COLA_PEDIDOS_ROBOTS_AGV); colaPedidosCanastos.destroy(); IPC::BufferCanastosSharedMemory shMemBufferCanastos0 = IPC::BufferCanastosSharedMemory("shMemBufferCanastos0"); IPC::BufferCanastosSharedMemory shMemBufferCanastos1 = IPC::BufferCanastosSharedMemory("shMemBufferCanastos1"); IPC::BufferCanastosSharedMemory shMemBufferCanastos2 = IPC::BufferCanastosSharedMemory("shMemBufferCanastos2"); shMemBufferCanastos0.getSharedMemory(DIRECTORY_AGV, ID_BUFFER_CANASTOS_0); shMemBufferCanastos1.getSharedMemory(DIRECTORY_AGV, ID_BUFFER_CANASTOS_1); shMemBufferCanastos2.getSharedMemory(DIRECTORY_AGV, ID_BUFFER_CANASTOS_2); shMemBufferCanastos0.destroy(); shMemBufferCanastos1.destroy(); shMemBufferCanastos2.destroy(); //Robots 11 y 12 IPC::Barrera1112MessageQueue cola11_A_12; cola11_A_12.getMessageQueue(DIRECTORY_ROBOT_12, ID_COLA_11_A_12); cola11_A_12.destroy(); IPC::Barrera1112MessageQueue cola12_A_11; cola12_A_11.getMessageQueue(DIRECTORY_ROBOT_12, ID_COLA_12_A_11); cola12_A_11.destroy(); // IPCs Torres IPC::SharedMemory<DataSM_R11_R14> SM_R11_R14("SM_R11_R14"); SM_R11_R14.getSharedMemory(DIRECTORY_ROBOT_11, SM_R11_R14_ID); SM_R11_R14.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC shMem_R11_R14 destruido"); IPC::SharedMemory<DataSM_R14_R16> SM_R14_R16("SM_R14_R16"); SM_R14_R16.getSharedMemory(DIRECTORY_ROBOT_14, SM_R14_R16_ID); SM_R14_R16.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC shMem_R14_R16 destruido"); IPC::Semaphore semMutexSM_R11_R14("semMutexSM_R11_R14"); semMutexSM_R11_R14.getSemaphore(DIRECTORY_ROBOT_11, SEM_MUTEX_SM_R11_R14_ID, 1); semMutexSM_R11_R14.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC semMutex_shMem_R11_R14 destruido"); IPC::Semaphore semMutexSM_R14_R16("semMutexSM_R14_R16"); semMutexSM_R14_R16.getSemaphore(DIRECTORY_ROBOT_14, SEM_MUTEX_SM_R14_R16_ID, 1); semMutexSM_R14_R16.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC semMutex_shMem_R14_R16 destruido"); IPC::Semaphore semMutex_sincronismo_R16("semMutex_sincronismo_R16"); semMutex_sincronismo_R16.getSemaphore(DIRECTORY_ROBOT_16, SEM_MUTEX_SINCRONISMO_R16_ID, 1); semMutex_sincronismo_R16.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC semMutex_sincronismo_R16 destruido"); IPC::Semaphore semR11_Cinta13("semR11_Cinta13"); semR11_Cinta13.getSemaphore(DIRECTORY_ROBOT_11, SEM_R11_CINTA_13, AMOUNT_CINTA_13); semR11_Cinta13.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC semR11_Cinta13 destruido"); IPC::Semaphore semR14_Cinta13("semR14_Cinta13"); semR14_Cinta13.getSemaphore(DIRECTORY_ROBOT_14, SEM_R14_CINTA13_ID, 1); semR14_Cinta13.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC semR14_Cinta13 destruido"); IPC::Semaphore semR14_Cinta15("semR14_Cinta15"); semR14_Cinta15.getSemaphore(DIRECTORY_ROBOT_14, SEM_R14_CINTA15_ID, 1); semR14_Cinta15.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC semR14_Cinta15 destruido"); /*** Queues ***/ IPC::MsgQueue inputQueueDespacho("inputQueueDespacho"); inputQueueDespacho.getMsgQueue(DIRECTORY_DESPACHO, MSGQUEUE_DESPACHO_INPUT_ID); inputQueueDespacho.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueDespacho destruido"); IPC::MsgQueue inputQueueR16_Cinta15("inputQueueR16_Cinta15"); inputQueueR16_Cinta15.getMsgQueue(DIRECTORY_ROBOT_16, MSGQUEUE_R16_CINTA15_INPUT_ID); inputQueueR16_Cinta15.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueR16_Cinta15 destruido"); IPC::MsgQueue inputQueueR16_Despacho("inputQueueR16_Despacho"); inputQueueR16_Despacho.getMsgQueue(DIRECTORY_ROBOT_16, MSGQUEUE_R16_DESPACHO_INPUT_ID); inputQueueR16_Despacho.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueR16_Despacho Destruido"); IPC::MsgQueue inputQueueCliente("inputQueueCliente"); inputQueueCliente.getMsgQueue(DIRECTORY_CLIENTE, MSGQUEUE_CLIENT_INPUT_ID); inputQueueCliente.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueCliente destruido"); IPC::MsgQueue R16_Cliente_Queue("R16_Cliente_Queue"); R16_Cliente_Queue.getMsgQueue(DIRECTORY_ROBOT_16, MSGQUEUE_R16_CLIENT_ID); R16_Cliente_Queue.destroy(); Logger::logMessage(Logger::IMPORTANT, "IPC R16_Cliente_Queue destruido"); // Fin IPCs Torres IPC::VendedorLibreMessageQueue vendedores("Vendedores Msg Queue"); vendedores.getMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_VENDEDORES); vendedores.destroy(); IPC::ClientesMessageQueue clientes("Clientes Msg Queue"); clientes.getMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_CLIENTES); clientes.destroy(); IPC::PedidosVendedorMessageQueue pedidos("Pedidos Msg Queue"); pedidos.getMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_PEDIDOS); pedidos.destroy(); IPC::Semaphore mutexAlmacenDePiezas("mutexAlmacenDePiezas"); mutexAlmacenDePiezas.getSemaphore(DIRECTORY_APIEZAS, LETRA_SEM_ALMACEN_PIEZAS, 1); mutexAlmacenDePiezas.destroy(); IPC::EspacioAlmacenPiezasSharedMemory shMemAlmacenDePiezas = IPC::EspacioAlmacenPiezasSharedMemory("shMemAlmacenDePiezas"); shMemAlmacenDePiezas.getSharedMemory(DIRECTORY_APIEZAS, LETRA_SHMEM_ALMACEN_PIEZAS); shMemAlmacenDePiezas.destroy(); IPC::Semaphore esperaRepositorCanasto("Espera Repositor Canasto"); esperaRepositorCanasto.getSemaphore(DIRECTORY_APIEZAS, LETRA_SEM_ESPERA_REPOSITOR_CANASTOS, 1); esperaRepositorCanasto.destroy(); IPC::Semaphore esperaRepositorGabinete("Espera Repositor Gabinete"); esperaRepositorGabinete.getSemaphore(DIRECTORY_APIEZAS, LETRA_SEM_ESPERA_REPOSITOR_GABINETES, 1); esperaRepositorGabinete.destroy(); IPC::MsgQueue consultasAlmacen("consultasAlmacen"); consultasAlmacen.getMsgQueue(DIRECTORY_VENDEDOR, ID_COLA_CONSULTAS_ALMACEN_PIEZAS); consultasAlmacen.destroy(); IPC::MsgQueue respuestasAlmacen("respuestasAlmacen"); respuestasAlmacen.getMsgQueue(DIRECTORY_VENDEDOR, ID_COLA_RESPUESTAS_ALMACEN_PIEZAS); respuestasAlmacen.destroy(); } catch (Exception & e) { Logger::getInstance().logMessage(Logger::ERROR, e.get_error_description().c_str()); abort(); } IPC::SharedMemory<AlmacenProductosTerminados> shmemAlmacenTerminados("shMemAlmacenTerminados"); shmemAlmacenTerminados.getSharedMemory(DIRECTORY_VENDEDOR, ID_ALMACEN_TERMINADOS); shmemAlmacenTerminados.destroy(); IPC::SharedMemory<int> shmemNumeroOrdenCompra("ultimaOrdenCompra"); shmemNumeroOrdenCompra.getSharedMemory(DIRECTORY_VENDEDOR, ID_SHMEM_NRO_OC); shmemNumeroOrdenCompra.destroy(); IPC::Semaphore mutexAlmacenTerminados("Mutex Almacen Terminados"); mutexAlmacenTerminados.getSemaphore(DIRECTORY_VENDEDOR, ID_ALMACEN_TERMINADOS, 1); mutexAlmacenTerminados.destroy(); IPC::Semaphore mutexOrdenDeCompra("mutexOrdenDeCompra"); mutexOrdenDeCompra.getSemaphore(DIRECTORY_VENDEDOR, ID_SHMEM_NRO_OC, 1); mutexOrdenDeCompra.destroy(); }
int main() { int respuesta; do //ciclo repetir asta que { //system("cls");//borrar pantalla clrscr(); //menu para que el usuario se guie. cout<<" =========================================\n"; cout<<" || FACTURACION ||\n"; cout<<" ||-------------------------------------||\n"; cout<<" || 1.- Nueva Factura ||\n"; cout<<" || 2.- Clientes ||\n"; cout<<" || 3.- Buscar una Factura ||\n"; cout<<" || 4.- Buscar un Cliente ||\n"; cout<<" || 5.- Salir ||\n"; cout<<" =========================================\n"; cout<<endl; cout<<" -> INGRESE OPCION: ";//solicitud de su respues cin>>respuesta;//respuesta //system("cls");//borrar pantalla clrscr(); switch(respuesta)//seleccion de en caso que respuesta se { case 1: ingreso(); break;//sea uno llama al procedimiento ingreso arriba case 2: clientes(); //system("pause"); getch(); break;//llama ala funcion ver datos case 3: detalles(); //system("pause"); getch(); break;//llama ala funcion ver datos case 4: Buscar_Clientes(); //system("pause"); getch(); break;//llama ala funcion ver datos case 5: //system("cls"); clrscr(); cout<<"*/*/*/*/*/USTED salio correctamente del programa/*/*/*/*/*/\n\n\n"; exit(1);; break;//cierra el programa default: cout<<"numero incorrecto intente nuevamente\n\n"; //system("pause"); getch(); break;//lanza un mensaje y vuelve a mostrar los datos } } while(respuesta!=5); //system("pause"); getch(); //cout<<endl; return 0; }
void createIPCs() { //Logger::getInstance().createLog(); Logger::getInstance().setProcessInformation("Launcher:"); // Robot 5 IPC::Semaphore semaforoApiRobot5("Api robot 5"); semaforoApiRobot5.createSemaphore(DIRECTORY_ROBOT_5, ID_SEM_API_ROBOT_5, 1); semaforoApiRobot5.initializeSemaphore(0,1); // Robot 5 - Cinta IPC::PedidosProduccionMessageQueue colaPedidos("PedidosProduccionMessageQueue"); colaPedidos.createMessageQueue(DIRECTORY_ROBOT_5,ID_COLA_PEDIDOS_PRODUCCION); IPC::Semaphore semaforoAccesoEstadoRobot5("Estado Robot 5"); semaforoAccesoEstadoRobot5.createSemaphore(DIRECTORY_ROBOT_5, ID_ESTADO_ROBOT_5, 1); semaforoAccesoEstadoRobot5.initializeSemaphore(0,1); IPC::EstadoRobot5SharedMemory estadoRobot5ShMem("EstadoRobot5SharedMemory"); estadoRobot5ShMem.createSharedMemory(DIRECTORY_ROBOT_5, ID_ESTADO_ROBOT_5); semaforoAccesoEstadoRobot5.wait(); { EstadoRobot5 estadoRobot5; estadoRobot5.robot5Bloqueado = false; estadoRobot5ShMem.writeInfo(&estadoRobot5); } semaforoAccesoEstadoRobot5.signal(); IPC::Semaphore semaforoBloqueoRobot5("Bloqueo Robot 5"); semaforoBloqueoRobot5.createSemaphore(DIRECTORY_ROBOT_5, ID_SEM_BLOQUEO_ROBOT_5, 1); semaforoBloqueoRobot5.initializeSemaphore(0,0); IPC::Semaphore semaforoBloqueoRobot11("Bloqueo Robot 11"); IPC::Semaphore semBloqueoRobot12("semBloqueoRobot12"); semaforoBloqueoRobot11.createSemaphore(DIRECTORY_ROBOT_11, ID_SEM_BLOQUEO_ROBOT_11, CANTIDAD_CINTAS_6); semBloqueoRobot12.createSemaphore(DIRECTORY_ROBOT_12, ID_SEM_BLOQUEO_ROBOT_12, CANTIDAD_CINTAS_6); for (int i = 0; i < CANTIDAD_CINTAS_6; ++i) { semaforoBloqueoRobot11.initializeSemaphore(i, 0); semBloqueoRobot12.initializeSemaphore(i, 0); } IPC::Semaphore semaforoAccesoCinta6("Acceso Cinta 6"); semaforoAccesoCinta6.createSemaphore(DIRECTORY_ROBOT_11, ID_SEM_CINTA_6, CANTIDAD_CINTAS_6); for (int i = 0; i < CANTIDAD_CINTAS_6; ++i) { semaforoAccesoCinta6.initializeSemaphore(i, 1); } IPC::Cinta6SharedMemory cinta6_0("Cinta 6 Share dMemory 0"); cinta6_0.createSharedMemory(DIRECTORY_ROBOT_11, ID_CINTA_6_0); IPC::Cinta6SharedMemory cinta6_1("Cinta 6 Share dMemory 1"); cinta6_1.createSharedMemory(DIRECTORY_ROBOT_11, ID_CINTA_6_1); CintaTransportadora_6 cinta6; cinta6.cantLibres = BUFF_SIZE_CINTA_6; cinta6.puntoLectura = 0; cinta6.robot11Durmiendo = false; for (int i = 0; i < BUFF_SIZE_CINTA_6; i++) cinta6.lugarVacio[i] = true; semaforoAccesoCinta6.wait(0); { cinta6_0.writeInfo(&cinta6); } semaforoAccesoCinta6.signal(0); semaforoAccesoCinta6.wait(1); { cinta6_1.writeInfo(&cinta6); } semaforoAccesoCinta6.signal(1); //Robot 5 - AGV IPC::BufferCanastoEntre5yAGVSharedMemory shMemPasajeCanastoEntre5yAGV1("BufferCanastoEntre5yAGVSharedMemory 0"); IPC::BufferCanastoEntre5yAGVSharedMemory shMemPasajeCanastoEntre5yAGV2("BufferCanastoEntre5yAGVSharedMemory 1"); IPC::BufferCanastoEntre5yAGVSharedMemory shMemPasajeCanastoEntre5yAGV3("BufferCanastoEntre5yAGVSharedMemory 2"); shMemPasajeCanastoEntre5yAGV1.createSharedMemory(DIRECTORY_AGV, ID_BUFFER_AGV_5_0); shMemPasajeCanastoEntre5yAGV2.createSharedMemory(DIRECTORY_AGV, ID_BUFFER_AGV_5_1); shMemPasajeCanastoEntre5yAGV3.createSharedMemory(DIRECTORY_AGV, ID_BUFFER_AGV_5_2); // Do the same with the semaphores IPC::Semaphore semBloqueoAGV("semBloqueoAGV"); IPC::Semaphore semBufferAGV_5("semBufferAGV_5"); IPC::Semaphore semBufferCanastos("semMemCanastos"); semBloqueoAGV.createSemaphore(DIRECTORY_AGV, ID_SEM_BLOQUEO_AGV, CANTIDAD_AGVS); semBufferAGV_5.createSemaphore(DIRECTORY_AGV, ID_SEM_BUFFER_AGV_5, CANTIDAD_AGVS); semBufferCanastos.createSemaphore(DIRECTORY_AGV, ID_SEM_BUFFER_CANASTOS, CANTIDAD_AGVS); for (int i = 0; i < CANTIDAD_AGVS; i++) { semBloqueoAGV.initializeSemaphore(i, 0); semBufferAGV_5.initializeSemaphore(i, 1); semBufferCanastos.initializeSemaphore(i, 1); } // Do the same with the queues IPC::PedidosAgvMessageQueue colaPedidosAGV_5; colaPedidosAGV_5.createMessageQueue(DIRECTORY_AGV, ID_COLA_PEDIDOS_AGV_5); // Robots cintas - AGV BufferCanastos canastos; for (int i = 0; i < MAX_QUANTITY_CANASTOS; i++) { canastos.canastos[i].cantidadPiezas = 0; canastos.canastos[i].tipoPieza = NULL_PIEZA; canastos.canastos[5].tipoPieza = PIEZA_2; canastos.robotCinta1EsperaPorElLugarNumero = -1; canastos.robotCinta2EsperaPorElLugarNumero = -1; } IPC::PedidosCanastosMessageQueue colaPedidosCanastos; colaPedidosCanastos.createMessageQueue(DIRECTORY_AGV, ID_COLA_PEDIDOS_ROBOTS_AGV); IPC::BufferCanastosSharedMemory shMemBufferCanastos0 = IPC::BufferCanastosSharedMemory("shMemBufferCanastos0"); IPC::BufferCanastosSharedMemory shMemBufferCanastos1 = IPC::BufferCanastosSharedMemory("shMemBufferCanastos1"); IPC::BufferCanastosSharedMemory shMemBufferCanastos2 = IPC::BufferCanastosSharedMemory("shMemBufferCanastos2"); shMemBufferCanastos0.createSharedMemory(DIRECTORY_AGV, ID_BUFFER_CANASTOS_0); shMemBufferCanastos1.createSharedMemory(DIRECTORY_AGV, ID_BUFFER_CANASTOS_1); shMemBufferCanastos2.createSharedMemory(DIRECTORY_AGV, ID_BUFFER_CANASTOS_2); semBufferCanastos.wait(0); { shMemBufferCanastos0.writeInfo(&canastos); } semBufferCanastos.signal(0); semBufferCanastos.wait(1); { shMemBufferCanastos1.writeInfo(&canastos); } semBufferCanastos.signal(1); semBufferCanastos.wait(2); { shMemBufferCanastos2.writeInfo(&canastos); } semBufferCanastos.signal(2); //Robots 11 y 12 IPC::Barrera1112MessageQueue cola11_A_12; cola11_A_12.createMessageQueue(DIRECTORY_ROBOT_12, ID_COLA_11_A_12); IPC::Barrera1112MessageQueue cola12_A_11; cola12_A_11.createMessageQueue(DIRECTORY_ROBOT_12, ID_COLA_12_A_11); /* IPCs Torres: R11-R14-R16-Despacho-Cliente-Vendedores */ // DataSM_R11_R14 dataSM_R11_R14; // DataSM_R14_R16 dataSM_R14_R16; // Create and initialize ShMem IPC::SharedMemory<SerializedData> SM_R11_R14("SM_R11_R14"); SM_R11_R14.createSharedMemory(DIRECTORY_ROBOT_11, SM_R11_R14_ID); // SM_R11_R14.write( & dataSM_R11_R14 ); Logger::logMessage(Logger::IMPORTANT, "IPC SM_R11_R14 creado"); IPC::SharedMemory<SerializedData> SM_R14_R16("SM_R14_R16"); SM_R14_R16.createSharedMemory(DIRECTORY_ROBOT_14, SM_R14_R16_ID); // SM_R14_R16.write( & dataSM_R14_R16 ); Logger::logMessage(Logger::IMPORTANT, "IPC SM_R14_R16 creado"); // Do the same with the semaphores IPC::Semaphore semMutexSM_R11_R14("semMutexSM_R11_R14"); semMutexSM_R11_R14.createSemaphore(DIRECTORY_ROBOT_11, SEM_MUTEX_SM_R11_R14_ID, 1); semMutexSM_R11_R14.initializeSemaphore(0, 1); Logger::logMessage(Logger::IMPORTANT, "IPC semMutexSM_R11_R14 creado"); IPC::Semaphore semMutexSM_R14_R16("semMutexSM_R14_R16"); semMutexSM_R14_R16.createSemaphore(DIRECTORY_ROBOT_14, SEM_MUTEX_SM_R14_R16_ID, 1); semMutexSM_R14_R16.initializeSemaphore(0, 1); Logger::logMessage(Logger::IMPORTANT, "IPC semMutexSM_R14_R16 creado"); IPC::Semaphore semMutex_sincronismo_R16_("semMutex_sincronismo_R16"); semMutex_sincronismo_R16_.createSemaphore(DIRECTORY_ROBOT_16, SEM_MUTEX_SINCRONISMO_R16_ID, 1); semMutex_sincronismo_R16_.initializeSemaphore(0, 1); Logger::logMessage(Logger::IMPORTANT, "IPC semMutex_sincronismo_R16"); IPC::Semaphore semR11_Cinta13("semR11_Cinta13"); semR11_Cinta13.createSemaphore(DIRECTORY_ROBOT_11, SEM_R11_CINTA_13, AMOUNT_CINTA_13); for (int i = 0; i < AMOUNT_CINTA_13; ++i) { semR11_Cinta13.initializeSemaphore(i, 0); } Logger::logMessage(Logger::IMPORTANT, "IPC semR11_Cinta13 creado"); IPC::Semaphore semR14_Cinta13("semR14_Cinta13"); semR14_Cinta13.createSemaphore(DIRECTORY_ROBOT_14, SEM_R14_CINTA13_ID, 1); semR14_Cinta13.initializeSemaphore(0, 0); Logger::logMessage(Logger::IMPORTANT, "IPC semR14_Cinta13 creado"); IPC::Semaphore semR14_Cinta15("semR14_Cinta15"); semR14_Cinta15.createSemaphore(DIRECTORY_ROBOT_14, SEM_R14_CINTA15_ID, 1); semR14_Cinta15.initializeSemaphore(0, 0); Logger::logMessage(Logger::IMPORTANT, "IPC semR14_Cinta15 creado"); /* NOTA: La notación para colas es que el input o output es respecto * del nombre del proceso asociado a la cola. inputQueueClient por * ejemplo indica que es la cola donde el cliente recibe mensajes */ IPC::MsgQueue inputQueueDespacho("inputQueueDespacho"); inputQueueDespacho.create(DIRECTORY_DESPACHO, MSGQUEUE_DESPACHO_INPUT_ID); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueDespacho creado"); IPC::MsgQueue inputQueueR16_Cinta15("inputQueueR16_Cinta15"); inputQueueR16_Cinta15.create(DIRECTORY_ROBOT_16, MSGQUEUE_R16_CINTA15_INPUT_ID); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueR16_Cinta15 creado"); IPC::MsgQueue inputQueueR16_Despacho("inputQueueR16_Despacho"); inputQueueR16_Despacho.create(DIRECTORY_ROBOT_16, MSGQUEUE_R16_DESPACHO_INPUT_ID); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueR16_Despacho creado"); IPC::MsgQueue inputQueueCliente("inputQueueCliente"); inputQueueCliente.create(DIRECTORY_CLIENTE, MSGQUEUE_CLIENT_INPUT_ID); Logger::logMessage(Logger::IMPORTANT, "IPC inputQueueCliente creado"); IPC::MsgQueue R16_Cliente_Queue("R16_Cliente_Queue"); R16_Cliente_Queue.create(DIRECTORY_ROBOT_16, MSGQUEUE_R16_CLIENT_ID); Logger::logMessage(Logger::IMPORTANT, "IPC R16_Cliente_Queue creado"); /* Fin IPCs Torres */ IPC::VendedorLibreMessageQueue vendedores("Vendedores Msg Queue"); vendedores.createMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_VENDEDORES); IPC::ClientesMessageQueue clientes("Clientes Msg Queue"); clientes.createMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_CLIENTES); IPC::PedidosVendedorMessageQueue pedidos("Pedidos Msg Queue"); pedidos.createMessageQueue(DIRECTORY_VENDEDOR, ID_COLA_PEDIDOS); IPC::MsgQueue consultasAlmacen("ConsultasAlmacen"); consultasAlmacen.create(DIRECTORY_VENDEDOR, ID_COLA_CONSULTAS_ALMACEN_PIEZAS); IPC::MsgQueue respuestasAlmacen("RespuestasAlmacen"); respuestasAlmacen.create(DIRECTORY_VENDEDOR, ID_COLA_RESPUESTAS_ALMACEN_PIEZAS); IPC::SharedMemory<AlmacenProductosTerminados> shmemAlmacenTerminados("shMemAlmacenTerminados"); shmemAlmacenTerminados.createSharedMemory(DIRECTORY_VENDEDOR, ID_ALMACEN_TERMINADOS); IPC::SharedMemory<int> shmemNumeroOrdenCompra("shmemNumeroOrdenCompra"); shmemNumeroOrdenCompra.createSharedMemory(DIRECTORY_VENDEDOR, ID_SHMEM_NRO_OC); IPC::Semaphore mutexAlmacenTerminados("Acceso Almacen Terminados"); mutexAlmacenTerminados.createSemaphore(DIRECTORY_VENDEDOR, ID_ALMACEN_TERMINADOS, 1); mutexAlmacenTerminados.initializeSemaphore(0,1); IPC::Semaphore mutexOrdenDeCompra("mutexOrdenDeCompra"); mutexOrdenDeCompra.createSemaphore(DIRECTORY_VENDEDOR, ID_SHMEM_NRO_OC, 1); mutexOrdenDeCompra.initializeSemaphore(0, 1); /* Setea la orden de compra en uno por ser la primera. */ mutexOrdenDeCompra.wait(); { int shMemData = 1; shmemNumeroOrdenCompra.write(&shMemData); } mutexOrdenDeCompra.signal(); /* almacén de piezas */ IPC::Semaphore mutexAlmacenDePiezas("mutexAlmacenDePiezas"); mutexAlmacenDePiezas.createSemaphore(DIRECTORY_APIEZAS, LETRA_SEM_ALMACEN_PIEZAS, 1); mutexAlmacenDePiezas.initializeSemaphore(0, 1); IPC::Semaphore esperaRepositorCanasto("Espera Repositor Canasto"); esperaRepositorCanasto.createSemaphore(DIRECTORY_APIEZAS, LETRA_SEM_ESPERA_REPOSITOR_CANASTOS, 1); esperaRepositorCanasto.initializeSemaphore(0, 0); IPC::Semaphore esperaRepositorGabinete("Espera Repositor Gabinete"); esperaRepositorGabinete.createSemaphore(DIRECTORY_APIEZAS, LETRA_SEM_ESPERA_REPOSITOR_GABINETES, 1); esperaRepositorGabinete.initializeSemaphore(0, 0); IPC::EspacioAlmacenPiezasSharedMemory shMemAlmacenDePiezas = IPC::EspacioAlmacenPiezasSharedMemory("shMemAlmacenDePiezas"); shMemAlmacenDePiezas.createSharedMemory(DIRECTORY_APIEZAS, LETRA_SHMEM_ALMACEN_PIEZAS); EstructuraAlmacenPiezas estructuraAlmacen; for (int i = 0; i < CANTIDAD_TIPOS_PIEZAS; ++i) estructuraAlmacen.cantCanastos[i] = 1; for (int i = 0; i < CANTIDAD_TIPOS_GABINETES; ++i) estructuraAlmacen.cantGabinetes[i] = 0; shMemAlmacenDePiezas.writeInfo(&estructuraAlmacen); }
void menu_scroll(CDKSCREEN *cdkScreen) { /* WINDOW *scrollwin; scrollwin=newwin(20,20,10,10); box(scrollwin,0,0); mvwaddstr(scrollwin,2,2,"dios"); wrefresh (scrollwin);*/ // refresh(); char *opciones[]={"Proveedores","Tecnicos","Clientes","salir"}; CDKSCROLL *scroll; int elegido; do{ scroll=newCDKScroll (cdkScreen, 2, 2, RIGHT,10, 20, "<C>Menu", opciones, 4, TRUE, A_REVERSE, TRUE, FALSE ); elegido=activateCDKScroll(scroll,0); //refreshCDKScreen(cdkScreen); // //refresh(); switch(elegido) { case 0: destroyCDKScroll(scroll); //unregisterCDKObject(vSCROLL,scroll); // refreshCDKScreen(cdkScreen); //getch(); proveedores(); // registerCDKObject(cdkScreen,vSCROLL,scroll); //produccion(); break; case 1: destroyCDKScroll(scroll); tecnicos(); //administracion(); break; case 2: // mvwaddstr(cdkScreen->window,2,2,"dios"); // wrefresh(cdkScreen->window); // getch(); clientes(); break; case 3: endCDK(); exit(0); } }while(elegido!=3); getch(); }