Пример #1
0
void *processo(void *arg) {
	int id = *(int*)arg;

	printf("Processo[%d] inicializou!\n", id);

	struct PageTable PT = IniciaTabela(id);
  //PreencheTabela(&PT, id);
        memProcessos.ListaDePaginas[id] = &PT;
  while(1) {
	  pthread_mutex_lock(&mutex);
	  SolicitaPagina(&memProcessos, memoria, &PT, id);
	  pthread_mutex_unlock(&mutex);
	 // ImprimeTabela(&PT, id);
    	  ImprimeMemoria(memoria, TAM_MEM);
	  sleep(3); 	
  }



	pthread_exit(NULL);

}
Пример #2
0
int BuscaServicio(int id,Tipo_Servicio *p,int nTipo)
{
	Tipo_XML *xml=NULL;
	char szAux[500];
	char szCampo[100];
	int i,nNivel;
	if (nTipo==BUSCA_TX)
	{
		//Busca si el servicio ya esta asignado
		for(i=0;i<global.nIndiceServicio;i++)
		{
			if (Tipo_Hash_servicio[i].nTx==p->nTx)
			{
				memcpy(p,&Tipo_Hash_servicio[i],sizeof(Tipo_Servicio));
				return 1;
			}
		}
		sprintf(szAux,"%i",p->nTx);
		//i=BuscaNivelTablaXml(id,&global.xml_servicios,"TX",szAux,INTEGER);
		ImprimeMemoria(id,"Ante de BuscaTablaXml");
		xml=BuscaTablaXml(id,&global.xml_servicios,"TX",szAux,INTEGER,&nNivel);
		ImprimeMemoria(id,"Despues de BuscaTablaXml");
	}
	else if (nTipo==BUSCA_URL)
	{
		//i=BuscaNivelTablaXml(id,&global.xml_servicios,"URL",p->szUrl,STRING);
		xml=BuscaTablaXml(id,&global.xml_servicios,"URL",p->szUrl,STRSTR,&nNivel);
	}
	if (xml==NULL) return 0;

	sprintf(szCampo,"IP[%i]",nNivel);
	GetStrXML(xml,szCampo,szAux,sizeof(szAux));
	sprintf(p->szIp,"%s",szAux);
	sprintf(szCampo,"PORT[%i]",nNivel);
	GetIntXML(xml,szCampo,&p->nPort);

	sprintf(szCampo,"TX[%i]",nNivel);
	GetIntXML(xml,szCampo,&p->nTx);
	sprintf(szCampo,"DESCRIPCION[%i]",nNivel);
	GetStrXML(xml,szCampo,szAux,sizeof(szAux));
	sprintf(p->szDescripcion,"%s",szAux);

	sprintf(szCampo,"TAG_PAGINA[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szPagina,sizeof(p->szPagina));
	sprintf(szCampo,"TAG_IMAGEN[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szImagen,sizeof(p->szImagen));
	sprintf(szCampo,"URL[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szUrl,sizeof(p->szUrl));

	p->nTimeout=10;
	sprintf(szCampo,"TIMEOUT[%i]",nNivel);
	GetIntXML(xml,szCampo,&p->nTimeout);
	p->nTipoRespuesta=0;
	sprintf(szCampo,"TIPO_RESPUESTA[%i]",nNivel);
	GetIntXML(xml,szCampo,&p->nTipoRespuesta);
	p->nLenMinimo=0;
	sprintf(szCampo,"LARGO_MINIMO_RESPUESTA[%i]",nNivel);
	GetIntXML(xml,szCampo,&p->nLenMinimo);
	p->nLlaveQuery=0;
	sprintf(szCampo,"LLAVE_QUERY[%i]",nNivel);
	WriteLog(0,szCampo);
	GetIntXML(xml,szCampo,&p->nLlaveQuery);
	p->nTimeoutRafaga=300;
	sprintf(szCampo,"TIMEOUT_RAFAGA[%i]",nNivel);
	GetIntXML(xml,szCampo,&p->nTimeoutRafaga);
	sprintf(p->szPatronFinal,"");
	sprintf(szCampo,"PATRON_FINAL[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szPatronFinal,sizeof(p->szPatronFinal));
	sprintf(p->szTipoConexion,"CON");
	sprintf(szCampo,"TIPO_CONEXION[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szTipoConexion,sizeof(p->szTipoConexion));
	sprintf(szCampo,"USA_DOS_IP[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szUsaDosIP,sizeof(p->szUsaDosIP));
	sprintf(szCampo,"IP1[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szIp1,sizeof(p->szIp1));
	sprintf(szCampo,"PORT1[%i]",nNivel);
	GetIntXML(xml,szCampo,&p->nPort1);
	sprintf(szCampo,"SSL[%i]",nNivel);
	GetStrXML(xml,szCampo,szAux,sizeof(szAux));
	if (memcmp(szAux,"SSL",3)==0) p->ssl=1;
	else p->ssl=0;
	sprintf(szCampo,"LISTA_IP[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szListaIP,sizeof(p->szListaIP));
	//WriteLog(0,p->szListaIP);
	sprintf(szCampo,"ESCRIBE_FILE[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szEscribeFile,sizeof(p->szEscribeFile));
	WriteLog(0,p->szEscribeFile);
	sprintf(szCampo,"RUTA_FILE[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szRutaFile,sizeof(p->szRutaFile));
	//WriteLog(0,p->szRutaFile);
	sprintf(szCampo,"DATA_RESPUESTA[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szDataRespuesta,sizeof(p->szDataRespuesta));
	sprintf(szCampo,"DATA_HEADER[%i]",nNivel);
	GetStrXML(xml,szCampo,p->szDataHeader,sizeof(p->szDataHeader));
	//WriteLog(0,p->szDataRespuesta);
	

	//ImprimeXML1(xml);
	//Solo use el Hash cuando vengan con TX por ahora
	if (nTipo==BUSCA_TX)
	{
		//Copio el registro a la tabla hash
		sprintf(szAux,"Asigno Hash Servicio %i Total=%i",p->nTx,global.nIndiceServicio);
		WriteLog(id,szAux);
	
		memcpy(&Tipo_Hash_servicio[global.nIndiceServicio],p,sizeof(Tipo_Servicio));
		if (global.nIndiceServicio==MAX_SERVICIOS)
		{
			WriteLog(id,"Alcanza Maximo Servicios en Hash");
		}
		else global.nIndiceServicio++;
		//xml=CierraXML(xml);
		ImprimeMemoria(id,"Sale de BuscaServicio");
	}
	return 1;
}