/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.pieShare.pieShareServer.tasks;
import java.net.InetSocketAddress;
import org.pieShare.pieShareServer.services.loopHoleService.api.ILoopHoleService;
import org.pieShare.pieTools.piePlate.model.message.loopHoleMessages.api.IUdpMessage;
import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.api.task.IPieTask;
import org.pieShare.pieTools.pieUtilities.service.pieLogger.PieLogger;
/**
*
* @author RicLeo00
*/
public class WaitForAckFromClientTask implements IPieTask {
private IUdpMessage msgToSend;
private InetSocketAddress udpAddress;
private boolean ackArrived = false;
private ILoopHoleService loopHoleService;
public void setUdpAddress(InetSocketAddress udpAddress) {
this.udpAddress = udpAddress;
}
public void setLoopHoleService(ILoopHoleService loopHoleService) {
this.loopHoleService = loopHoleService;
}
public IUdpMessage getMmsgToSend() {
return msgToSend;
}
public void setMmsgToSend(IUdpMessage msgToSend) {
this.msgToSend = msgToSend;
}
@Override
public void run() {
try {
PieLogger.info(this.getClass(), String.format("WaitForAck. ID: %s", msgToSend.getSenderID()));
Thread.sleep(20000);
} catch (InterruptedException ex) {
PieLogger.debug(this.getClass(), "Error while thread sleep.", ex);
}
if (!ackArrived) {
loopHoleService.send(msgToSend, udpAddress);
}
}
public void ackArrived() {
this.ackArrived = true;
}
}