int selectInterrupt(global tabla){
	if(mtexto)printf("INTERRUPCION.I--%s\n",tabla.cabecera->name);
	int i=0,respuesta,status=1,fdmax=*(tabla.maxfd);
	char mensaje[128],mensajeError[64],numero[16],data[8];
	answer aux;
	fd_set readfds;
	readfds=*(tabla.original->original);
	if(selectGRID_planificador(fdmax,&readfds)>0){
		while ((!FD_ISSET(i,&readfds))&&(i<=fdmax)){
			i++;
		}
		log_trace(tabla.logging.trace,"\t\t\t------INTERRUPT------\t\t\t","TRACE");
		strcpy(mensaje,"Nº:I");
		itoa(i,numero,10);
		strcat(mensaje,"--Socket:(Esp./Recv.)-Msj:(Esp./Recv.)-(Msj/Cont/Dat/Sym)--Duenio:  --(N/");
		strcat(mensaje,numero);
		strcat(mensaje,")--(");
		if (i>fdmax){
			if(mtexto)puts("--ERROR:No se encontro candidato para selectear!!--");
			strcpy(mensajeError,"Nº:I");
			strcat(mensajeError,"-ERROR:No se encontro candidato para selectear!!");
			log_info(tabla.logging.info,mensaje,"ERROR");
			exit(1);
		}else{
			if(mtexto)printf("INTERRUPCION.MID.I--%s\n",tabla.cabecera->name);
			respuesta=recvAnswer(&aux,i);
			if(mtexto)printf("INTERRUPCION.MID.F--%s\n",tabla.cabecera->name);
			strcat(mensaje,"ALL/");
			itoa((int)aux.msg,numero,10);
			strcat(mensaje,numero);
			strcat(mensaje,")--(");
			strcat(mensaje,numero);
			itoa((int)aux.cont,numero,10);
			strcat(mensaje,"/");
			strcat(mensaje,numero);
			strcat(mensaje,"/");
			data[0]=aux.data;
			data[1]='\0';
			strcat(mensaje,data);
			strcat(mensaje,"/");
			data[0]=aux.symbol;
			data[1]='\0';
			strcat(mensaje,data);
			strcat(mensaje,")--Duenio:");
			if(i==tabla.cabecera->nid)	strcat(mensaje,tabla.cabecera->name);
			else {
				data[0]=buscarSimbolo(i,tabla);
				data[1]='\0';
				strcat(mensaje,data);
			}
			strcat(mensaje,".");
			log_trace(tabla.logging.trace,mensaje,"TRACE");
			status=interrupcion(i,respuesta,&aux,tabla);
			log_trace(tabla.logging.trace,"\t\t\t------INTERRUPT------\t\t\t","TRACE");
		}
	}
	if(mtexto)printf("INTERRUPCION.F--%s\n",tabla.cabecera->name);
	//}while(muerto);
	return status;
}
Beispiel #2
0
//--------------------------------------------------------------------------------------------------
void Nextion::send(const char* command)
{
  recvAnswer(); // вычитываем ответ от Nextion
  
  if(!stream)
    return;

  stream->write(command,strlen(command));     

}
Beispiel #3
0
//--------------------------------------------------------------------------------------------------
void Nextion::sendEndOfPacket()
{
  recvAnswer(); // вычитываем ответ от Nextion
  
  if(!stream)
    return; 

  uint8_t packet_end[3] = {0xFF,0xFF,0xFF};  
  stream->write(packet_end,sizeof(packet_end));

}
void inicializar(nodoNivel*raiz,global*general){
	int estado;
	answer tempo;
	FD_SET(raiz->nid,general->original->original);
	if(raiz->nid>*(general->maxfd))*(general->maxfd)=raiz->nid;
	do{
		if(!mpantalla)puts("\nPidiendo algoritmo.");
	sendAnswer(6,0,' ',' ',(short)raiz->nid);
	enviarLog(raiz->nid,*general,6,0,' ',' ');
	estado=recvAnswer(&tempo,(short)raiz->nid);
	recibirLog(*general,raiz->nid,tempo);
	if(estado!=6) puts("El nivel flasheo cualquiera!");
	}while(estado!=6);
	modificarAlgoritmo(tempo,*general);
	do{
		if(!mpantalla)puts("\nPidiendo retardo entre turnos.");
	sendAnswer(4,0,' ',' ',(short)raiz->nid);
	enviarLog(raiz->nid,*general,4,0,' ',' ');
	estado=recvAnswer(&tempo,(short)raiz->nid);
	recibirLog(*general,raiz->nid,tempo);
	if(estado!=4) puts("El nivel flasheo cualquiera!");
	}while(estado!=4);
	modificarRetardo(tempo,*general);
}
Beispiel #5
0
int tr_trackerPulse( tr_tracker_t * tc )
{
    tr_torrent_t * tor = tc->tor;
    tr_info_t    * inf = &tor->info;
    uint64_t       now = tr_date();

    if( ( tc->status & TC_STATUS_IDLE ) && shouldConnect( tc ) )
    {
        tc->resolve = tr_netResolveInit( inf->trackerAddress );

        tr_inf( "Tracker: connecting to %s:%d (%s)",
                inf->trackerAddress, inf->trackerPort,
                tc->started ? "sending 'started'" :
                ( tc->completed ? "sending 'completed'" :
                  ( tc->stopped ? "sending 'stopped'" :
                    ( 0 < tc->newPort ? "sending 'stopped' to change port" :
                      "getting peers" ) ) ) );

        tc->status  = TC_STATUS_RESOLVE;
        tc->dateTry = tr_date();
    }

    if( tc->status & TC_STATUS_RESOLVE )
    {
        int ret;
        struct in_addr addr;

        ret = tr_netResolvePulse( tc->resolve, &addr );
        if( ret == TR_RESOLVE_WAIT )
        {
            return 0;
        }
        else
        {
            tr_netResolveClose( tc->resolve );
        }

        if( ret == TR_RESOLVE_ERROR )
        {
            tc->status = TC_STATUS_IDLE;
            return 0;
        }

        if( tr_fdSocketWillCreate( tor->fdlimit, 1 ) )
        {
            tc->status = TC_STATUS_IDLE;
            return 0;
        }

        tc->socket = tr_netOpen( addr, htons( inf->trackerPort ) );
        if( tc->socket < 0 )
        {
            tr_fdSocketClosed( tor->fdlimit, 1 );
            tc->status = TC_STATUS_IDLE;
            return 0;
        }

        tc->status = TC_STATUS_CONNECT;
    }

    if( tc->status & TC_STATUS_CONNECT )
    {
        /* We are connecting to the tracker. Try to send the query */
        sendQuery( tc );
    }

    if( tc->status & TC_STATUS_RECV )
    {
        /* Try to get something */
        recvAnswer( tc );
    }

    if( tc->status > TC_STATUS_IDLE && now > tc->dateTry + 60000 )
    {
        /* Give up if the request wasn't successful within 60 seconds */
        tr_inf( "Tracker: timeout reached (60 s)" );

        tr_netClose( tc->socket );
        tr_fdSocketClosed( tor->fdlimit, 1 );

        tc->status  = TC_STATUS_IDLE;
        tc->dateTry = tr_date();
    }

    return 0;
}
Beispiel #6
0
//--------------------------------------------------------------------------------------------------
void Nextion::update()
{
  recvAnswer(); // вычитываем ответ от Nextion
}