Timeout related classes and functionality added.
This commit is contained in:
7
src/main/java/vslab1/src/Timeout/JobList.java
Normal file
7
src/main/java/vslab1/src/Timeout/JobList.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package vslab1.src.Timeout;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class JobList extends LinkedList<TimeoutJob> {
|
||||
|
||||
}
|
||||
7
src/main/java/vslab1/src/Timeout/TimeoutJob.java
Normal file
7
src/main/java/vslab1/src/Timeout/TimeoutJob.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package vslab1.src.Timeout;
|
||||
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public record TimeoutJob(long currentSystemTimeMillis, Peer peerToWaitFor) {
|
||||
|
||||
}
|
||||
42
src/main/java/vslab1/src/Timeout/TimeoutThread.java
Normal file
42
src/main/java/vslab1/src/Timeout/TimeoutThread.java
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user