void ProcesoSalida::terminarEjecucion() {

	std::stringstream info;
	info << getNombre() << ": Ejecutando metodo terminarEjecucion";
	Log::getLog()->logMensaje(info.str());
	info.str("");


	while (getCantidadAutos() > 0) {
		info << getNombre() << ": El estacionamiento tiene [" << getCantidadAutos() << "] autos";
		Log::getLog()->logMensaje(info.str());
		info.str("");

		procesarIngresoOEgreso();
	}

	while (cantidadEntradasOcupadas > 0) {

		info << getNombre() << ": El estacionamiento esta vacío, entradas ocupadas = " << cantidadEntradasOcupadas;
		Log::getLog()->logMensaje(info.str());
		info.str("");

		procesarEgreso();
	}

	info << getNombre() << ": Terminando Ejecucion";
	Log::getLog()->logMensaje(info.str());
	info.str("");

}
bool AlmacenCertificadoCAPI::open()
{
	wchar_t *nombre;

	close();

	// ATENCION:
	// En caso de abrir almacenes desde Servicios en LocalSystem, habría que hacer
	// cambios en la llamada CertOpenStore, con las banderas:
	//		CERT_SYSTEM_STORE_SERVICES
	//		CERT_SYSTEM_STORE_CURRENT_SERVICE
	// Ver CertOpenStore en MSDN.

	if ( EsNombreAlmacenSistema(getNombre()) )
		handle = ::CertOpenSystemStore(csp, getNombre().cadena());
	else
	{
		nombre = ConversorDatos::ConvertirCadenaAUnicode(getNombre().cadena());

		handle = ::CertOpenStore(CERT_STORE_PROV_PHYSICAL, 0, csp,
								CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_NO_CRYPT_RELEASE_FLAG,
								nombre);

		// hay que liberar la cadena Unicode porque "ConvertirCadenaAUnicode" lo ha creado
		delete [] nombre;
	}

	return (handle != NULL);
}
Пример #3
0
int irc_recv_nick(void *data)
{
    struct irc_msgdata *msgdata = (struct irc_msgdata *) data;
    char prefix[MAX_NICK_LEN + 1];
    char *params[1];

    irc_get_prefix(msgdata->msg, prefix, MAX_NICK_LEN + 1);

    if (irc_parse_paramlist(msgdata->msg, params, 1) != 1)
    {
        slog(LOG_ERR, "Mensaje NICK mal formado: %s", msgdata->msg);
        return OK;
    }

    messageText("%s cambió su apodo a %s", prefix, params[0]);

    if (!strncmp(prefix, msgdata->clientdata->nick, MAX_NICK_LEN))
    {
        msgdata->clientdata->connected = 1;
        strncpy(msgdata->clientdata->nick, params[0], MAX_NICK_LEN);
        setApodo(params[0]);
        saveUserSettings(params[0], getNombre(), getNombreReal());
    }


    return OK;
}
Пример #4
0
void Tamagotchi::on_SaludB_clicked()
{
    if(create_window.granja->getPos(buscar(getNombre()))->enfermedad > 0 &&
            create_window.granja->getPos(buscar(getNombre()))->enfermedad <= 100)
    {
        if(enfermedades->getPrimero())
        {
            enfermedades->sacar();
            if(enfermedades->getPrimero())
                create_window.granja->getPos(buscar(getNombre()))->enfermedad = enfermedades->getPrimero()->valor;
            else
                create_window.granja->getPos(buscar(getNombre()))->enfermedad = 0;
        }
    }
    valores(getNombre());
}
Пример #5
0
void Situacion::imprimirSituacion()
{
	Consola consola = Consola::obtenerInstancia();

	// Muestra el nombre y la descripción de la situación
	consola.imprimirCadena("~~~~~~~~ " + getNombre() + " ~~~~~~~~");
	consola.imprimirCadena(getDescripcion());

	// Muestra la información de cada opción
	unsigned int i;
	for (i = 0; i < opciones.size(); ++i) {
		opciones[i].imprimirOpcion();
	}

	// Muestra una línea delimitadora
	consola.imprimirCadena("~~~~~~~~~" + std::string(getNombre().size(), '~') + "~~~~~~~~~");
}
Пример #6
0
/**
 * Función que borra un delincuente en la lista del programa.
 * @param delincuente Delincuente que queremos borrar.
 * @see agregarDelincuente(), modificarDelincuente()
 */
void __fastcall TDelincuentes::borrarDelincuente (TDelincuente delincuente)
{
    if(!borraDelincuente(this->delincuentes, getNombre(delincuente)))
    {
        if(getNumero(this->delincuentes) > 0)
            MessageBox(Application->Handle, "El registro que intenta borrar no existe.",
                       "Registro inexistente", MB_ICONWARNING);
        else
            MessageBox(Application->Handle, "La base de datos de criminales está vacía.",
                       "Base de datos vacía", MB_ICONWARNING);
    }
}
ArsCadena AlmacenCertificadoCL::getRutaAlmacen()
{
	ArsCadena ret;

	if ( !esAlmacenEnTarjeta() )
	{
		ret = getNombre();
		if (ret[ret.longitud()-1] != '\\')
			ret += "\\";
	}

	return (ret);
}
Пример #8
0
/**
        Se encarga de guardar las propiedades que serán introducidas
        al preparar el objeto para ser ejecutado.
*/
void GestorPropiedades::masPropiedades(NMMta *mta)
{
	NMMta * nuevo = new(std::nothrow) NMMta( *mta );

	if ( nuevo == NULL ) {
		throw ENoHayMemoria( std::string( "Creando propiedad '"
				+ mta->listar()
				+ "' en objeto '"
				+ getNombre() + '\''
				   ).c_str() );
	}

	vPropsIniciales.push_back( nuevo );
}
Пример #9
0
/**
 * Función que modifica un delincuente en la lista del programa.
 * @param delincuente Delincuente que queremos modificar.
 * @see agregarDelincuente(), borrarDelincuente()
 */
void __fastcall TDelincuentes::modificarDelincuente (TDelincuente delincuente)
{
    int indice;

    if(getDelincuente(this->delincuentes, getNombre(delincuente), indice))
    {
        this->delincuentes.delincuentes[indice] = delincuente;
    }
    else
    {   
        MessageBox(Application->Handle, "El criminal no existe, por lo que debería agregarlo.",
                   "Registro inexistente", MB_ICONWARNING);
    }
}
Пример #10
0
/**
 * Función que agrega un delincuente a la lista del programa.
 * @param delincuente Delincuente que queremos agregar.
 * @see modificarDelincuente(), borrarDelincuente()
 */
void __fastcall TDelincuentes::agregarDelincuente (TDelincuente delincuente)
{
    int indice;

    if(!getDelincuente(this->delincuentes, getNombre(delincuente), indice))
    {
        if(!agregaDelincuente(this->delincuentes, delincuente))
            MessageBox(Application->Handle, "No hay espacio en la base de datos.",
                       "Base de datos completa", MB_ICONWARNING);
    }
    else
    {
        MessageBox(Application->Handle, "El criminal ya existe, por lo que debería modificarlo.",
                   "Registro ya existente", MB_ICONWARNING);
    }
}
Пример #11
0
int hiloCPU() {

	t_cpu* cpu = crearCPU();

	list_add(procCPU->listaCPU, cpu);
	pthread_mutex_lock(&mutexCPULogs);
	log_info(logger, identificaCPU(queHiloSoy()));
	log_info(logger, "comienza ejecucion de un HILO ");
	log_info(logger,
			string_from_format("Me estoy levantando soy la cpu , %s \n",
					cpu->nombre));
	pthread_mutex_unlock(&mutexCPULogs);
//	printf("Me estoy levantando soy la cpu , %s", cpu->nombre);
//	printf("Creando CPU la id del hilo es %lu \n", cpu->idCPU);
	//conexiones = dictionary_create();

	int socketPlanificador;
	int socketMemoria;
	int resultConexion_mem = 0;
	int resultConexion_planif = 0;

	resultConexion_planif = conectar(configuracion->vg_ipPlanificador,
			string_itoa(configuracion->vg_puertoPlanificador),
			&socketPlanificador);
	if (resultConexion_planif == -1)
		pthread_mutex_lock(&mutexCPULogs);
	log_info(logger, identificaCPU(queHiloSoy()));
	log_error(logger, "[ERROR]no se conecto el CPU al Planificador");
	pthread_mutex_unlock(&mutexCPULogs);
	//dictionary_put(conexiones, "Planificador", string_itoa(socketPlanificador));
	cpu->socketPlanificador = socketPlanificador;
	enviarStruct(socketPlanificador, HANDSHAKE_CPU, getNombre());

	resultConexion_mem = conectar(configuracion->vg_ipMemoria,
			string_itoa(configuracion->vg_puertoMemoria), &socketMemoria);
	if (resultConexion_mem == -1)
		log_info(logger, identificaCPU(queHiloSoy()));
	log_error(logger, "[ERROR]no se conecto el CPU a la memoria");

	//dictionary_put(conexiones, "Memoria", string_itoa(socketMemoria));
	cpu->socketMemoria = socketMemoria;

	escucharConexiones("0", socketPlanificador, socketMemoria, 0,
			procesarMensajes, NULL, logger);

	return 0;
}
Пример #12
0
// ------------------------------------------------------ IdsPorObjeto::toXML()
std::string IdsPorObjeto::toXML() const
{
	Metodos::const_iterator it;

    std::string toret = "\n<Object name=\"";
    toret.append( getNombre() );
    toret.append( "\" parent=\"" );
    toret.append( getNombrePadre() );
    toret.append( "\">\n" );

    // Poner los atributos
    for(register unsigned int n = 0; n < nombresDeAtributos->getNumero(); ++n)
    {
            toret.append( "<Attribute name=\"" );
            toret.append( nombresDeAtributos->getID( n ) );
            toret.append( "\" visible=\"" );
            toret.push_back( ( nombresDeAtributos->esVisible( n ) ? '1' : '0' ) );
            toret.append( "\"/>\n" );
    }

    // Poner los métodos
    for(register unsigned int n = 0; n < nombresDeMetodos->getNumero(); ++n)
    {
            toret.append( "<Method name=\"" );
            toret.append( nombresDeMetodos->getID( n ) );
            toret.append( "\" visible=\"" );
            toret.append( ( nombresDeMetodos->esVisible( n ) ? "1" : "0" ) );
            toret.append( "\">\n" );

            // Poner las variables locales del método
            it = metodos.find( nombresDeMetodos->getID( n ) );

            if ( it != metodos.end() ) {
                for(unsigned int i = 0; i < it->second->getNumero(); ++i) {
                    toret.append( "<LocalReference name=\"" );
                    toret.append( it->second->getID( i ) );
                    toret.append( "\"/>\n" );
                }
            } else throw EInterno( "Mth no encontrado (?)" );

            toret.append( "</Method>\n" );
    }

    toret.append( "</Object>\n" );

    return toret;
}
Пример #13
0
/**
 * Función que carga en el formulario los datos de una posición dada de la
 * lista de delincuentes que tenemos almacenados.
 * @param i Número de delincuente dentro de la lista.
 */
void __fastcall TDelincuentes::posicionar (int i)
{
    if(i < getNumero(this->delincuentes))
    {
        TDelincuente aux;

        getDelincuente(this->delincuentes, i, aux);

        this->TxtNombre->Text  = (getNombre(aux)).c_str();
        this->TxtDelitos->Text = (getDelitos(aux)).c_str();
        this->Retrato->Text    = dameCara(getCara(aux)).c_str();

        this->ActualizarCheckButtons(getCara(aux));

        this->index = i;
        MeterNumeroEnLabel(this->LblNumFicha, this->index);
    }
}
bool TarjetaCAPI::conectar(Certificado *cert /*=NULL*/)
{
	bool  ok;
	char  *keyContainer;
	ArsCadena	aux;

	if (cert == NULL)
	{
		keyContainer = NULL;
	}
	else
	{
		aux = cert->getKeyContainer();
		keyContainer = aux.cadena();
	}

	ok = CryptAcquireContext(&handle, keyContainer, getNombre().cadena(),
							PROV_RSA_FULL, CRYPT_SILENT);

	return (ok);
}
void BuscarFavoritos()
{
	int i,f=0;
	for(i=0;i<_contactos.size();i++)
	{
		if(_contactos.favorito==1)
		{
			f=1;
			std::cout<<"Nombre: "<<getNombre()<<endl;
			std::cout<<"Apellidos: "<<getApellidos()<<endl;
			std::cout<<"DNI: "<<getDNI()<<endl;
			//cout<<"Telefono fijo: "<<get
			std::cout<<"Direcciones: "<<getDirecciones()<<endl;
			std::cout<<"Redes: "<<getRedes()<<enld;

		}
	}
	if(f=0)
	{
		cout<<"No hay ningun contacto favorito"<<enld;
	}


}
Пример #16
0
/**
 * prepararProps()
 * Prepara las propiedades de un objeto. Al terminar este método, el atributo
 * props está apuntando a un vector de Zero con los punteros a las propiedades.
 */
void GestorPropiedades::prepararProps()
{
	register unsigned int n;
	Atributo *atrInfo;
	Objeto *objInfo;
	AlmacenObjetos *cDest = Runtime::rt()->getContainerEjecucion();
	Objeto *objProp;

        // Copiar un vector vacío
	props = Runtime::gestorVectores->nuevo( "__" + getNombre() + "Props__" );

	if ( props != NULL ) {
		props->asignarA( cDest );
		props->incrementaReferencias();
	} else throw ENoHayMemoria( "Creando objeto de propiedades" );

        // Añadir las propiedades iniciales
	LiteralVector_Zero * vReal = Runtime::gestorVectores->busca( props );
	if ( vReal == NULL ) {
		throw ENoHayMemoria( std::string( "Creando propiedades de: " + getNombre() ).c_str() );
	}

	for(n = 0; n < vPropsIniciales.size(); ++n) {
                // Localizar el objeto en cuestión
		objProp = Runtime::rt()->getContainerIntStdLib()->busca(
				vPropsIniciales[n]->getIdObj()
		);

		if    ( objProp == NULL
		  || !( objProp->esDescendienteDe( Runtime::objetoPropiedades ) ) )
		{
			Runtime::ponExcepcionObjeto(
					vPropsIniciales[n]->getIdObj()
						   );
			break;
		}

		// Crear el objeto a meter
		objProp = objProp->copiaSistema(
				getNombre() + objProp->getNombre()
		);

		// Darle la info
		if ( !( vPropsIniciales[n]->getDatos().empty() ) )
		{
			objInfo = Runtime::gestorCadenas->nuevo(
					"",
					vPropsIniciales[n]->getDatos()
			);

			atrInfo = new(std::nothrow) Atributo(
					objProp,
					"info",
					objInfo,
					Atributo::PUBLICO
			);

			if ( objInfo != NULL
			  && atrInfo != NULL )
			{
				objProp->lAtrs.inserta(
					atrInfo->getNombre(),
					atrInfo
				);
			} else throw ENoHayMemoria(
						"creando atributo info en props"
						  );
		}

		vReal->mas( objProp );
	}

        // Eliminar las propiedades iniciales
	for(n = 0; n < vPropsIniciales.size(); ++n) {
		delete vPropsIniciales[n];
	}

	vPropsIniciales.clear();
}
bool AlmacenCertificadoCL::esAlmacenEnTarjeta()
{
	return (getNombre() == "");
}
void EstructuraDeExamen::mensaje(){
	std::cout << "La estructura: " << getNombre() << " no puede ejecutar esta operacion" << std::endl;
}
Пример #19
0
/**
 * @brief Sends a request to connect a client to a server using gtk fields.
 * @details 
 */
void connectClient(void){
	
	char *name, *real_name;
	char message[BUFFER];

    /*Checks if it is already connected*/
    semaphore_br(&readers_num, readers, writer, mutex_access, mutex_rvariables);
    if(connected){
        interfaceText(NULL, "Ya está conectado a un servidor.", ERROR_TEXT, MAIN_THREAD);
        semaphore_ar(&readers_num, writer, mutex_rvariables);
        return;
    }
    semaphore_ar(&readers_num, writer, mutex_rvariables);
	
	/* Getting text of fields */
	semaphore_bw(writer, readers);
    strcpy(nick, getApodo());
    semaphore_aw(writer, readers);
	name =  getNombre();
	real_name = getNombreReal();
    semaphore_bw(writer, readers);
    if(server_called){
        server_called = 0;
    }
    else{
        strcpy(client_server, getServidor());
        port = getPuerto();
    }
    semaphore_aw(writer, readers);
    

    /* Empty nick, name, real_name or client_server field */
    semaphore_br(&readers_num, readers, writer, mutex_access, mutex_rvariables);
    if(!(strlen(nick) && strlen(name) && strlen(real_name) && strlen(client_server))) {
    	interfaceErrorWindow("Los campos\n\t-Apodo\n\t-Nombre\n\t-Nombre real\n\t-Servidor\nno pueden estar vacíos", MAIN_THREAD);
        semaphore_ar(&readers_num, writer, mutex_rvariables);
    	return;
    }
    semaphore_ar(&readers_num, writer, mutex_rvariables);

    /* Empty port field */
    if(port <= 0){
    	port = DFLT_PORT;
    }

    /*Beginning of connection*/
    sprintf(message, "Conectando con %s:%d ...", client_server, port);
    interfaceText(NULL, message, MSG_TEXT, MAIN_THREAD);

    /*Connecting to the server*/
    if (client_connect_to_server(client_server, port, client_thread_listener) == ERROR){
    	sprintf(message, "Fallo en la conexión con %s\nEn el sistema de logs ha quedado registrado el error" 
    					 "correspondiente a este intento de conexión.", client_server);
    	interfaceErrorWindow(message, MAIN_THREAD);
    	syslog(LOG_ERR, "Failed while connecting to %s: %s", client_server, strerror(errno));
    	interfaceText(NULL, "Error de conexión", ERROR_TEXT, MAIN_THREAD);
    	return;
    }

    /*New session*/
    semaphore_br(&readers_num, readers, writer, mutex_access, mutex_rvariables);
    if (client_new_session(nick, name, real_name, client_server) == ERROR){
    	sprintf(message, "Fallo en la conexión con %s\nEn el sistema de logs ha quedado registrado el error" 
    					 "correspondiente a este intento de conexión.", client_server);
    	interfaceErrorWindow(message, MAIN_THREAD);
    	syslog(LOG_ERR, "Failed while connecting to %s: %s", client_server, strerror(errno));
    	interfaceText(NULL, "Error de conexión", ERROR_TEXT, MAIN_THREAD);
    	cerrar_canal_SSL(ssl);
        semaphore_ar(&readers_num, writer, mutex_rvariables);
    	return;
    }
    semaphore_ar(&readers_num, writer, mutex_rvariables);

    /*Connection successful*/
    semaphore_bw(writer, readers);
    connected = 1;
    semaphore_aw(writer, readers);

}
Пример #20
0
void Tamagotchi::pierdeVida()
{
    switch(rand()%4)
        {
            case 0:
                if(create_window.granja->getPos(buscar(getNombre()))->defecar >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->defecar < 500)
                {
                    if(desechos->getPrimero())
                    {
                        if(desechos->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(desechos->getPrimero()->valor+10);
                            desechos->meter(tempo);
                        }
                    }
                    else if(!desechos->getPrimero())
                    {
                        defecar = new NodoT(30);
                        desechos->meter(defecar);
                    }
                    create_window.granja->getPosi(buscar(getNombre()))->defecar = desechos->getPrimero()->valor;
                }
                valores(getNombre());
            break;


            case 1:
                if(create_window.granja->getPos(buscar(getNombre()))->comer >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->comer < 500)
                {
                    if(hambre->getPrimero())
                    {
                        if(hambre->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(hambre->getPrimero()->valor+10);
                            hambre->meter(tempo);
                        }
                    }
                    else if(!hambre->getPrimero())
                    {
                        comer = new NodoT(30);
                        hambre->meter(comer);
                    }
                    create_window.granja->getPos(buscar(getNombre()))->comer = hambre->getPrimero()->valor;
                }
                valores(getNombre());
            break;

            case 2:
                if(create_window.granja->getPos(buscar(getNombre()))->sanar >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->sanar < 100)
                {
                    if(enfermedades->getPrimero())
                    {
                        if(enfermedades->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(enfermedades->getPrimero()->valor+10);
                            enfermedades->meter(tempo);
                        }
                    }
                    else if(!enfermedades->getPrimero())
                    {
                        sanar = new NodoT(10);
                        enfermedades->meter(sanar);
                    }
                    create_window.granja->getPos(buscar(getNombre()))->sanar = enfermedades->getPrimero()->valor;
                }
                valores(getNombre());
            break;

            case 3:
                if(create_window.granja->getPos(buscar(getNombre()))->dormir >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->dormir < 100)
                {
                    if(sueno->getPrimero())
                    {
                        if(sueno->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(sueno->getPrimero()->valor+10);
                            sueno->meter(tempo);
                        }
                    }
                    else if(!sueno->getPrimero())
                    {
                        dormir = new NodoT(10);
                        sueno->meter(dormir);
                    }
                    create_window.granja->getPos(buscar(getNombre()))->sueno = sueno->getPrimero()->valor;
                }
                valores(getNombre());
            break;
        }
}
Пример #21
0
void connectToServer(const char *server, const char* port)
{
    char *nick = getApodo();
    char *user = getNombre();
    char *name = getNombreReal();
    int sock;
    const char *err;
    char addr_str[100];
    int retval;
    struct serv_info serv;

    if (!server || strlen(server) == 0)
    {
        errorText("Error: servidor inválido.");
        return;
    }

    if (!port || strlen(port) == 0)
    {
        errorText("Error: puerto inválido.");
        return;
    }

    if (!nick || !user || !name || strlen(nick) == 0 || strlen(user) == 0 || strlen(name) == 0)
    {
        errorWindow("Rellene los datos de nombre/usuario/apodo");
        return;
    }   

    if(client->connected)
        disconnectClient(NULL);

    messageText("Conectando con %s...", server);

    retval = client_connect_to(server, port, addr_str, 100);

    if (retval == ERR_SYS)
        err = strerror(errno);
    else if (retval == ERR_AIR)
        err = "no se ha podido resolver la dirección";
    else if (retval == ERR_NOTFOUND)
        err = "no se ha podido conectar.";
    else
        err = "error desconocido.";

    if (retval <= 0)
    {
        errorText("Error resolviendo %s: %s", server, err);
        return;
    }

    sock = retval;

    if (send_message(rcv_sockcomm, &sock, sizeof(int)) == ERR_SOCK)
    {
        errorText("Error al configurar la nueva conexión: %s", strerror(errno));
        close(sock);
        return;
    }

    irc_send_message(snd_qid, sock, "NICK %s", getApodo());
    irc_send_message(snd_qid, sock, "USER %s %s %s :%s", getNombre(), "0", "*", getNombreReal());

    client->connected = 1;
    strncpy(client->nick, nick, MAX_NICK_LEN);
    client->serv_sock = sock;

    setUserConnectionState(TRUE);

    strncpy(serv.servname, server, SERV_NAMELEN);
    strncpy(serv.port, port, MAX_PORT_LEN);
    serv_save_connection(&serv);

    client->connected = 1;
    messageText("Conectado a %s", addr_str);
    saveUserSettings(nick, user, name);
}
Пример #22
0
void Tamagotchi::bajarVida()
{
    int dano = ui->BarraComida->value() + ui->BarraDormir->value() + ui->BarraHigiene->value() + ui->BarraSalud->value();
    create_window.granja->getPos(buscar(getNombre()))->vida = 100 - (dano * 0.25);
    valores(getNombre());
}