Esempio n. 1
0
int main(int argc, char **argv)
{
	char buffer[255];

	if (argc != 2) {
		strcpy (buffer, "Error: Cantidad de parametros invalida\n");
		write (fileno(stderr),buffer, strlen(buffer));
		exit(1);
	}
	
	int cantProcesos = 0;
	sscanf(argv[1] , "%d", &cantProcesos);
	
	
	// Obteniendo semaforo de control de acceso a la memoria compartida
	Semaphore semControl = Semaphore();	
	semControl.getSemaphore((char *)DIRECTORY, ID_SEMCONTROL, 1);
	semControl.destroy();

	// Obteniendo semaforos de control de los procesos
	Semaphore semProductores = Semaphore();
	semProductores.getSemaphore((char *)DIRECTORY, ID_SEMPRODUCTORES, cantProcesos);
	semProductores.destroy();
	
	// Obteniendo la memoria compartida	
	CountingSharedMemory shMem = CountingSharedMemory();
	shMem.getSharedMemory((char *)DIRECTORY, ID_SHMEM);
	shMem.destroy();
	
	return 0;
}
Esempio n. 2
0
int main(int argc, char **argv)
{	
	Semaphore semControl = Semaphore();
	semControl.getSemaphore((char *)DIRECTORY, ID_SEMCONTROL, 1);
	semControl.destroy();

	// Obteniendo memoria compartida
	TicketsInfoSharedMemory shMem = TicketsInfoSharedMemory();
	shMem.getSharedMemory((char *)DIRECTORY, ID_SHMEM);
	shMem.destroy();

	// Obteniendo colas de mensajes
	GetVendedorMessageQueue	getVendedorQueue1 = GetVendedorMessageQueue();
	getVendedorQueue1.getMessageQueue((char*)DIRECTORY, ID_GET_VENDEDOR_1);
	getVendedorQueue1.destroy();
	
	ComprarMessageQueue comprarQueue1 = ComprarMessageQueue();
	comprarQueue1.getMessageQueue((char*)DIRECTORY, ID_COMPRAR_1);
	comprarQueue1.destroy();

	VenderMessageQueue venderQueue1 = VenderMessageQueue();
	venderQueue1.getMessageQueue((char*)DIRECTORY, ID_VENDER_1);
	venderQueue1.destroy();
	
	GetVendedorMessageQueue	getVendedorQueue2 = GetVendedorMessageQueue();
	getVendedorQueue2.getMessageQueue((char*)DIRECTORY, ID_GET_VENDEDOR_2);
	getVendedorQueue2.destroy();
	
	ComprarMessageQueue comprarQueue2 = ComprarMessageQueue();
	comprarQueue2.getMessageQueue((char*)DIRECTORY, ID_COMPRAR_2);
	comprarQueue2.destroy();

	VenderMessageQueue venderQueue2 = VenderMessageQueue();
	venderQueue2.getMessageQueue((char*)DIRECTORY, ID_VENDER_2);
	venderQueue2.destroy();
	
	// Obteniendo memoria compartida de numerador
	NumeradorSharedMemory shMemNum = NumeradorSharedMemory();
	shMemNum.getSharedMemory((char *)DIRECTORY_NUM, ID_SHMEM_NUMERADOR);
	shMemNum.destroy();
	
	Semaphore semControlNum = Semaphore();
	semControlNum.getSemaphore((char *)DIRECTORY_NUM, ID_SEMCONTROL_NUMERADOR, 1);
	semControlNum.destroy();
	
	return 0;
}
Esempio n. 3
0
  void testIsInitialized ()
  {
    sem = new Semaphore (0);


    CPPUNIT_ASSERT (sem->isInitialized ());

    sem->destroy ();

    CPPUNIT_ASSERT_EQUAL (sem->isInitialized (), 0);

    delete sem;
  }
Esempio n. 4
0
int main(int argc, char **argv)
{
	// Obtengo los semaforos que controlan el avance de productores y analizadores
	Semaphore semProductores = Semaphore();
	semProductores.getSemaphore((char *)DIRECTORY,ID_SEMPRODUCTORES, CANT_PRODUCTORES);	
	semProductores.destroy();
	
	Semaphore semAnalizadores =  Semaphore();
	semAnalizadores.getSemaphore((char *)DIRECTORY,ID_SEMANALIZADORES, CANT_ANALIZADORES);	
	semAnalizadores.destroy();

	// Obtengo el semaforo que controla el acceso a la memoria compartida
	Semaphore semControl = Semaphore();	
	semControl.getSemaphore((char *)DIRECTORY, ID_SEMCONTROL, 1);
	semControl.destroy();
	
	// Obtengo la memoria compartida
	SamplesTableSharedMemory table = SamplesTableSharedMemory();
	table.getSharedMemory((char *)DIRECTORY, ID_SHMEM);
	table.destroy();
	
	return 0;
}
Esempio n. 5
0
int main(int argc, char** argv) {
    char buffer[TAM_BUFFER];
    
    try {
        /* Obtengo la cola de comunicacion con el robot 5 con los dos procesos del controlador */
        ComunicacionRobot5MessageQueue colaComunicacionRobot5 = ComunicacionRobot5MessageQueue();
        colaComunicacionRobot5.getMessageQueue(DIRECTORY,ID_COLA_API_ROBOT_5);
        colaComunicacionRobot5.destroy();
    }
    catch (IPCException const& ex) {       
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what()); 
        write(fileno(stderr), buffer, strlen(buffer));  
        exit(-1); 
    }
    
    try {
        /* Obtengo la cola de pedidos del robot 5 */
        PedidosProduccionMessageQueue colaPedidos = PedidosProduccionMessageQueue();
        colaPedidos.getMessageQueue(DIRECTORY,ID_COLA_PEDIDOS_PRODUCCION);
        colaPedidos.destroy();
    }
    catch (IPCException const& ex) {     
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what());
        write(fileno(stderr), buffer, strlen(buffer));   
        exit(-1); 
    }
    
    /*
     * ROBOT 5 - AGV
     */
    
    try {
        /* Obtengo los buffer para depositar los canastos */    
        BufferCanastoSharedMemory bufferCanasto[3]; 
        bufferCanasto[0].getSharedMemory(DIRECTORY, ID_BUFFER_CANASTOS_0);
        bufferCanasto[0].destroy();
        bufferCanasto[1].getSharedMemory(DIRECTORY, ID_BUFFER_CANASTOS_1);
        bufferCanasto[1].destroy();
        bufferCanasto[2].getSharedMemory(DIRECTORY, ID_BUFFER_CANASTOS_2);
        bufferCanasto[2].destroy();
    }
    catch (IPCException const& ex) {     
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what()); 
        write(fileno(stderr), buffer, strlen(buffer));  
        exit(-1); 
    }
    
    try {
        /* Obtengo los semaforos de acceso a los buffer de los canastos */    
        Semaphore semaforoAccesoBufferAgv;
        semaforoAccesoBufferAgv.getSemaphore(DIRECTORY, ID_SEM_ACCESO_BUFFER_AGV, 3);
        semaforoAccesoBufferAgv.destroy();
    }
    catch (IPCException const& ex) {      
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what());    
        write(fileno(stderr), buffer, strlen(buffer));  
        exit(-1); 
    }
    
    try {
        /* Obtengo los semaforos de bloqueo de los Agv */
        Semaphore semaforoBloqueoAgv;
        semaforoBloqueoAgv.getSemaphore(DIRECTORY, ID_SEM_BLOQUEO_AGV, 3);
        semaforoBloqueoAgv.destroy();
    }
    catch (IPCException const& ex) {       
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what());    
        write(fileno(stderr), buffer, strlen(buffer));    
        exit(-1); 
    }

    try {
        /* Obtengo la cola de pedidos de los AGV */    
        PedidosAgvMessageQueue colaPedidosAgv; 
        colaPedidosAgv.getMessageQueue(DIRECTORY,ID_COLA_PEDIDOS_AGV_5);
        colaPedidosAgv.destroy();
    }
    catch (IPCException const& ex) {        
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what());
        write(fileno(stderr), buffer, strlen(buffer));  
        exit(-1); 
    }
    
    /*
     * Robot 5 - Cinta
     */
    
    try {
        /* Obtengo las memorias compartidas y los semaforos de las cintas transportadoras */
        Semaphore semCinta0 = Semaphore();
        semCinta0.getSemaphore(DIRECTORY, ID_CINTA_6_0, 1);
        semCinta0.destroy();
        CintaTransportadoraSharedMemory memCinta0 = CintaTransportadoraSharedMemory();
        memCinta0.getSharedMemory(DIRECTORY, ID_CINTA_6_0);
        memCinta0.destroy();
    
        Semaphore semCinta1 = Semaphore();
        semCinta1.getSemaphore(DIRECTORY, ID_CINTA_6_1, 1);
        semCinta1.destroy();
        CintaTransportadoraSharedMemory memCinta1 = CintaTransportadoraSharedMemory();
        memCinta1.getSharedMemory(DIRECTORY, ID_CINTA_6_1);
        memCinta1.destroy();
    }
    catch (IPCException const& ex) {        
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what());
        write(fileno(stderr), buffer, strlen(buffer));        
        exit(-1); 
    }
    
    try {
        /* Obtengo el semaforo de bloqueo del robot 5 */
        Semaphore semBloqueo5 = Semaphore();
        semBloqueo5.getSemaphore(DIRECTORY, ID_SEM_BLOQUEO_ROBOT_5, 1);
        semBloqueo5.destroy();
       
        /* Obtengo la memoria de estado del robot 5 y el semaforo de acceso */
        EstadoRobot5SharedMemory estadoRobot5 = EstadoRobot5SharedMemory();
        estadoRobot5.getSharedMemory(DIRECTORY, ID_MEM_ESTADO_ROBOT_5);
        estadoRobot5.destroy();
        Semaphore semaforoAccesoEstadoRobot5 = Semaphore();
        semaforoAccesoEstadoRobot5.getSemaphore(DIRECTORY, ID_SEM_ACCESO_ESTADO_ROBOT_5, 1);
        semaforoAccesoEstadoRobot5.destroy();
    }
    catch (IPCException const& ex) {        
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what());        
        write(fileno(stderr), buffer, strlen(buffer));        
        exit(-1); 
    }
    
    try {
        /* Obtengo la memoria de estado de los robot 11 y los semaforos de acceso */
        EstadoRobot11SharedMemory estadoRobot11[2];
        estadoRobot11[0].getSharedMemory(DIRECTORY, ID_MEM_ESTADO_ROBOT_11_0);
        estadoRobot11[0].destroy();
        estadoRobot11[1].getSharedMemory(DIRECTORY, ID_MEM_ESTADO_ROBOT_11_1);
        estadoRobot11[1].destroy();
    
        Semaphore semaforoAccesoEstadoRobot11 = Semaphore();
        semaforoAccesoEstadoRobot11.getSemaphore(DIRECTORY, ID_SEM_ACCESO_ESTADO_ROBOT_11, 2);
        semaforoAccesoEstadoRobot11.destroy();
    
        /* Obtengo los semaforos de bloqueo del robot 11 */
        Semaphore semaforoBloqueoRobot11 = Semaphore();
        semaforoBloqueoRobot11.getSemaphore(DIRECTORY, ID_SEM_BLOQUEO_ROBOT_11, 2);
        semaforoBloqueoRobot11.destroy();
    }
    catch (IPCException const& ex) {
        sprintf(buffer, "Terminator Robot 5:Error: %s\n", ex.what());
        write(fileno(stderr), buffer, strlen(buffer));
        exit(-1);
    }       
    
    return 0;
}
Esempio n. 6
0
int main(int argc, char **argv)
{	
	try {
		// Obteniendo semaforo de control de acceso a la memoria compartida Sala
		Semaphore semControlSala = Semaphore();	
		semControlSala.getSemaphore((char *)DIRECTORY, ID_SEM_CONTROL_SALA, 1);
		semControlSala.destroy();
	}
	catch (IPCException &ex) {
		char buffer[TAM_BUFFER];
		sprintf (buffer, "Terminator Error: %s\n", ex.getDescription());
		write (fileno(stderr),buffer, strlen(buffer));
	}

	try{
		// Obteniendo semaforo de bloqueo de la puerta
		Semaphore semPuerta = Semaphore();
		semPuerta.getSemaphore((char *)DIRECTORY, ID_SEM_PUERTA, 1);
		semPuerta.destroy();
	}
	catch (IPCException &ex) {
		char buffer[TAM_BUFFER];
		sprintf (buffer, "Terminator Error: %s\n", ex.getDescription());
		write (fileno(stderr),buffer, strlen(buffer));
	}
	
	try{	
		// Obteniendo semaforo de bloqueo de buses
		Semaphore semBuses = Semaphore();
		semBuses.getSemaphore((char *)DIRECTORY, ID_SEM_BUSES, 1);
		semBuses.destroy();
	}
	catch (IPCException &ex) {
		char buffer[TAM_BUFFER];
		sprintf (buffer, "Terminator Error: %s\n", ex.getDescription());
		write (fileno(stderr),buffer, strlen(buffer));
	}
	
	try{
		// Obteniendo la cola de mensajes de intercambio
		IntercambioMessageQueue intercambioMessageQueue = IntercambioMessageQueue();
		intercambioMessageQueue.getMessageQueue((char*)DIRECTORY, ID_COLA_PERSONAS);
		intercambioMessageQueue.destroy();
		}
	catch (IPCException &ex) {
		char buffer[TAM_BUFFER];
		sprintf (buffer, "Terminator Error: %s\n", ex.getDescription());
		write (fileno(stderr),buffer, strlen(buffer));
	}
	
	try{	
		// Obteniendo memoria compartida Sala
		InfoSalaSharedMemory shMemSala = InfoSalaSharedMemory();
		shMemSala.getSharedMemory((char *)DIRECTORY, ID_SHMEM_SALA);
		shMemSala.destroy();
	}
	catch (IPCException &ex) {
		char buffer[TAM_BUFFER];
		sprintf (buffer, "Terminator Error: %s\n", ex.getDescription());
		write (fileno(stderr),buffer, strlen(buffer));
	}	


	return 0;
}