Timeout related classes and functionality added.

This commit is contained in:
WickedJack99
2024-04-06 20:23:15 +02:00
parent 17cf6041da
commit 46ccf30724
3 changed files with 56 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
package vslab1.src.Timeout;
import java.util.LinkedList;
public class JobList extends LinkedList<TimeoutJob> {
}

View File

@@ -0,0 +1,7 @@
package vslab1.src.Timeout;
import vslab1.src.Peers.Peer;
public record TimeoutJob(long currentSystemTimeMillis, Peer peerToWaitFor) {
}

View File

@@ -0,0 +1,42 @@
package vslab1.src.Timeout;
import vslab1.src.Terminatable;
import vslab1.src.FileReaderWriter.FileReaderWriter;
import vslab1.src.Peers.EOnlineState;
import vslab1.src.Peers.Peer;
public class TimeoutThread extends Thread implements Terminatable {
private boolean timeoutThreadRunning = true;
private JobList jobQueue = null;
public TimeoutThread(JobList jobQueue) {
this.jobQueue = jobQueue;
}
@Override
public void run() {
while (timeoutThreadRunning) {
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (TimeoutJob timeoutJob : jobQueue) {
if (System.currentTimeMillis() - timeoutJob.currentSystemTimeMillis() >= 3000) {
String ipAddress = timeoutJob.peerToWaitFor().ipAddress();
int port = timeoutJob.peerToWaitFor().port();
Peer unreachablePeer = new Peer(ipAddress, port, null, EOnlineState.Offline);
FileReaderWriter.updatePeer(unreachablePeer);
}
}
}
}
@Override
public void terminate() {
timeoutThreadRunning = false;
this.interrupt();
}
}