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); }
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; }