package es.tid.pce.pcepsession;
import java.util.TimerTask;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import es.tid.pce.pcep.constructs.ErrorConstruct;
import es.tid.pce.pcep.messages.PCEPError;
import es.tid.pce.pcep.objects.ObjectParameters;
import es.tid.pce.pcep.objects.PCEPErrorObject;
/**
* If no Open message is received before the expiration of the OpenWait
timer, the PCEP peer sends a PCErr message with Error-Type=1 and
Error-value=2, the system releases the PCEP resources for the PCEP
peer, closes the TCP connection, and moves to the Idle state.
* @author Oscar Gonzalez de Dios
*
*/
public class KeepWaitTimerTask extends TimerTask {
// private DataOutputStream out=null; //Use this to send messages to peer
private PCEPSession parentPCESession;
private Logger log;
public KeepWaitTimerTask(PCEPSession parentPCESession){
this.parentPCESession=parentPCESession;
log=LoggerFactory.getLogger("PCEServer");
}
public void run() {
log.warn("KEEP WAIT Timer OVER");
PCEPError perror=new PCEPError();
PCEPErrorObject perrorObject=new PCEPErrorObject();
perrorObject.setErrorType(ObjectParameters.ERROR_ESTABLISHMENT);
perrorObject.setErrorValue(ObjectParameters.ERROR_ESTABLISHMENT_NO_KA_OR_ERROR_KEEPWAIT_TIMER);
ErrorConstruct error_c=new ErrorConstruct();
error_c.getErrorObjList().add(perrorObject);
perror.setError(error_c);
parentPCESession.sendPCEPMessage(perror);
this.parentPCESession.killSession();
return;
}
}