Changed package name from java.src to vslab1.src because java not allowed as name at compiling stage (upsi xD).
This commit is contained in:
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "interactive"
|
||||
}
|
||||
2
pom.xml
2
pom.xml
@@ -4,7 +4,7 @@
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>java.src</groupId>
|
||||
<groupId>vslab1.src</groupId>
|
||||
<artifactId>labor1vs</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package java.src.FileReaderWriter;
|
||||
package vslab1.src.FileReaderWriter;
|
||||
|
||||
import java.src.Peers.EOnlineState;
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.EOnlineState;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public class FileReaderWriter {
|
||||
|
||||
@@ -2,19 +2,20 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Input;
|
||||
package vslab1.src.Input;
|
||||
|
||||
import java.src.Terminatable;
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Peers.PeerOrganizer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.PublishFileNameNotification;
|
||||
import vslab1.src.Terminatable;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Peers.PeerOrganizer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.PublishFileNameNotification;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class InputThread extends Thread implements Terminatable {
|
||||
|
||||
private Terminatable receiverThread;
|
||||
private Terminatable senderThread;
|
||||
private Terminatable requestExecuterThread;
|
||||
|
||||
private SendingQueue sendingQueue;
|
||||
|
||||
@@ -25,9 +26,10 @@ public class InputThread extends Thread implements Terminatable {
|
||||
private boolean receivedValidIP = false;
|
||||
private boolean receivedValidAndFreePort = false;
|
||||
|
||||
public InputThread(Terminatable senderThread, Terminatable receiverThread, SendingQueue sendingQueue) {
|
||||
public InputThread(Terminatable senderThread, Terminatable receiverThread, Terminatable requestExecuterThread, SendingQueue sendingQueue) {
|
||||
this.senderThread = senderThread;
|
||||
this.receiverThread = receiverThread;
|
||||
this.requestExecuterThread = requestExecuterThread;
|
||||
this.sendingQueue = sendingQueue;
|
||||
}
|
||||
|
||||
@@ -80,6 +82,9 @@ public class InputThread extends Thread implements Terminatable {
|
||||
if (receiverThread != null) {
|
||||
receiverThread.terminate();
|
||||
}
|
||||
if (requestExecuterThread != null) {
|
||||
requestExecuterThread.terminate();
|
||||
}
|
||||
this.terminate();
|
||||
}break;
|
||||
case "ShowNodes": {
|
||||
@@ -123,5 +128,6 @@ public class InputThread extends Thread implements Terminatable {
|
||||
|
||||
public void terminate() {
|
||||
inputThreadRunning = false;
|
||||
this.interrupt();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package java.src.Input;
|
||||
package vslab1.src.Input;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
@@ -2,15 +2,16 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src;
|
||||
package vslab1.src;
|
||||
|
||||
import java.net.DatagramSocket;
|
||||
import java.net.SocketException;
|
||||
import java.src.Input.InputThread;
|
||||
import java.src.Receiving.ReceiverThread;
|
||||
import java.src.Receiving.ReceivingQueue;
|
||||
import java.src.Sending.SenderThread;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import vslab1.src.Input.InputThread;
|
||||
import vslab1.src.Receiving.ReceiverThread;
|
||||
import vslab1.src.Receiving.ReceivingQueue;
|
||||
import vslab1.src.Request.RequestExecuterThread;
|
||||
import vslab1.src.Sending.SenderThread;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
@@ -20,14 +21,17 @@ public class Main {
|
||||
SendingQueue sendingQueue = new SendingQueue();
|
||||
ReceivingQueue receivingQueue = new ReceivingQueue();
|
||||
|
||||
RequestExecuterThread requestExecuterThread = new RequestExecuterThread(sendingQueue, receivingQueue);
|
||||
requestExecuterThread.start();
|
||||
ReceiverThread receiverThread = new ReceiverThread(datagramSocket, receivingQueue);
|
||||
receiverThread.start();
|
||||
SenderThread senderThread = new SenderThread(datagramSocket, sendingQueue);
|
||||
senderThread.start();
|
||||
InputThread inputThread = new InputThread(senderThread, receiverThread, sendingQueue);
|
||||
InputThread inputThread = new InputThread(senderThread, receiverThread, requestExecuterThread, sendingQueue);
|
||||
inputThread.start();
|
||||
|
||||
try {
|
||||
requestExecuterThread.join();
|
||||
receiverThread.join();
|
||||
senderThread.join();
|
||||
inputThread.join();
|
||||
@@ -1,4 +1,4 @@
|
||||
package java.src.Peers;
|
||||
package vslab1.src.Peers;
|
||||
|
||||
public enum EOnlineState {
|
||||
Online,
|
||||
@@ -2,7 +2,7 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Peers;
|
||||
package vslab1.src.Peers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package java.src.Peers;
|
||||
package vslab1.src.Peers;
|
||||
|
||||
import java.io.FileReader;
|
||||
import java.util.LinkedList;
|
||||
@@ -2,6 +2,6 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Receiving;
|
||||
package vslab1.src.Receiving;
|
||||
|
||||
public record ReceivedData(String data) {}
|
||||
@@ -2,12 +2,12 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Receiving;
|
||||
package vslab1.src.Receiving;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.DatagramSocket;
|
||||
import java.src.Terminatable;
|
||||
import vslab1.src.Terminatable;
|
||||
|
||||
/**
|
||||
* An instance of a ReceiverThread is handling incoming traffic by putting data into an internal
|
||||
@@ -48,6 +48,7 @@ public class ReceiverThread extends Thread implements Terminatable {
|
||||
*/
|
||||
public void terminate() {
|
||||
receiverThreadRunning = false;
|
||||
this.interrupt();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2,7 +2,7 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Receiving;
|
||||
package vslab1.src.Receiving;
|
||||
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package java.src.Request.Data;
|
||||
package vslab1.src.Request.Data;
|
||||
|
||||
import java.src.FileReaderWriter.FileReaderWriter;
|
||||
import java.src.Peers.EOnlineState;
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.EDataType;
|
||||
import vslab1.src.FileReaderWriter.FileReaderWriter;
|
||||
import vslab1.src.Peers.EOnlineState;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.EDataType;
|
||||
|
||||
public record OnlineStateNotificationRequest(Peer sender, Peer receiver) implements Requestable {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package java.src.Request.Data;
|
||||
package vslab1.src.Request.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.EDataType;
|
||||
import java.src.Sending.Data.OnlineStateNotification;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.EDataType;
|
||||
import vslab1.src.Sending.Data.OnlineStateNotification;
|
||||
|
||||
public record OnlineStateRequestRequest(Peer sender, Peer receiver) implements Requestable {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package java.src.Request.Data;
|
||||
package vslab1.src.Request.Data;
|
||||
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.EDataType;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.EDataType;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
@@ -1,9 +1,9 @@
|
||||
package java.src.Request.Data;
|
||||
package vslab1.src.Request.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.EDataType;
|
||||
import java.src.Sending.Data.PullFileListRequest;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.EDataType;
|
||||
import vslab1.src.Sending.Data.PullFileListRequest;
|
||||
|
||||
public record PullFileListRequestRequest(Peer sender, Peer receiver) implements Requestable {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package java.src.Request.Data;
|
||||
package vslab1.src.Request.Data;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.EDataType;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.EDataType;
|
||||
|
||||
public record PullFileRequestRequest(Peer sender, Peer receiver, String fileName) implements Requestable {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package java.src.Request.Data;
|
||||
package vslab1.src.Request.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.EDataType;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.EDataType;
|
||||
|
||||
public interface Requestable {
|
||||
public EDataType getType();
|
||||
@@ -1,8 +1,8 @@
|
||||
package java.src.Request.Data;
|
||||
package vslab1.src.Request.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import java.src.Sending.Data.EDataType;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
import vslab1.src.Sending.Data.EDataType;
|
||||
|
||||
public record SendFileReplyRequest(Peer sender, Peer receiver, String fileName, String fileContent) implements Requestable {
|
||||
|
||||
@@ -2,23 +2,23 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Request;
|
||||
package vslab1.src.Request;
|
||||
|
||||
import java.src.Terminatable;
|
||||
import java.src.FileReaderWriter.FileReaderWriter;
|
||||
import java.src.FileReaderWriter.FileReaderWriter.EUpdated;
|
||||
import java.src.Peers.EOnlineState;
|
||||
import java.src.Peers.Peer;
|
||||
import java.src.Receiving.ReceivedData;
|
||||
import java.src.Receiving.ReceivingQueue;
|
||||
import java.src.Request.Data.OnlineStateNotificationRequest;
|
||||
import java.src.Request.Data.OnlineStateRequestRequest;
|
||||
import java.src.Request.Data.PublishFileNameNotificationRequest;
|
||||
import java.src.Request.Data.PullFileListRequestRequest;
|
||||
import java.src.Request.Data.PullFileRequestRequest;
|
||||
import java.src.Request.Data.Requestable;
|
||||
import java.src.Request.Data.SendFileReplyRequest;
|
||||
import java.src.Sending.SendingQueue;
|
||||
import vslab1.src.Terminatable;
|
||||
import vslab1.src.FileReaderWriter.FileReaderWriter;
|
||||
import vslab1.src.FileReaderWriter.FileReaderWriter.EUpdated;
|
||||
import vslab1.src.Peers.EOnlineState;
|
||||
import vslab1.src.Peers.Peer;
|
||||
import vslab1.src.Receiving.ReceivedData;
|
||||
import vslab1.src.Receiving.ReceivingQueue;
|
||||
import vslab1.src.Request.Data.OnlineStateNotificationRequest;
|
||||
import vslab1.src.Request.Data.OnlineStateRequestRequest;
|
||||
import vslab1.src.Request.Data.PublishFileNameNotificationRequest;
|
||||
import vslab1.src.Request.Data.PullFileListRequestRequest;
|
||||
import vslab1.src.Request.Data.PullFileRequestRequest;
|
||||
import vslab1.src.Request.Data.Requestable;
|
||||
import vslab1.src.Request.Data.SendFileReplyRequest;
|
||||
import vslab1.src.Sending.SendingQueue;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -56,6 +56,7 @@ public class RequestExecuterThread extends Thread implements Terminatable {
|
||||
|
||||
public void terminate() {
|
||||
requestExecuterThreadRunning = false;
|
||||
this.interrupt();
|
||||
}
|
||||
|
||||
private static Requestable toRequestable(JSONObject receivedData) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
public enum EDataType {
|
||||
OnlineStateRequest,
|
||||
@@ -1,6 +1,6 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public record OnlineStateNotification(Peer sender, Peer receiver) implements Sendable {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public record OnlineStateRequest(Peer sender, Peer receiver) implements Sendable {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public record OnlineStateResponse(Peer sender, Peer receiver) implements Sendable {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public record PublishFileNameNotification(Peer sender, Peer receiver, String fileName) implements Sendable {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
/**
|
||||
* Is never getting sent because szenario is, that all peers come online and stay online forever.
|
||||
@@ -1,6 +1,6 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public record PullFileRequest(Peer sender, Peer receiver, String fileName) implements Sendable {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
public record SendFileReply(Peer sender, Peer receiver, String fileContent, String fileName) implements Sendable {
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Sending.Data;
|
||||
package vslab1.src.Sending.Data;
|
||||
|
||||
import java.src.Peers.Peer;
|
||||
import vslab1.src.Peers.Peer;
|
||||
|
||||
/**
|
||||
* An instance of this class represents data to send to another peer, by also providing information
|
||||
@@ -2,15 +2,15 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Sending;
|
||||
package vslab1.src.Sending;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.DatagramSocket;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.src.Terminatable;
|
||||
import java.src.Sending.Data.Sendable;
|
||||
import vslab1.src.Terminatable;
|
||||
import vslab1.src.Sending.Data.Sendable;
|
||||
|
||||
public class SenderThread extends Thread implements Terminatable {
|
||||
|
||||
@@ -54,6 +54,7 @@ public class SenderThread extends Thread implements Terminatable {
|
||||
|
||||
public void terminate() {
|
||||
senderThreadRunning = false;
|
||||
this.interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src.Sending;
|
||||
package vslab1.src.Sending;
|
||||
|
||||
import java.src.Sending.Data.Sendable;
|
||||
import vslab1.src.Sending.Data.Sendable;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
public class SendingQueue extends LinkedBlockingQueue<Sendable> {}
|
||||
@@ -1,4 +1,4 @@
|
||||
package java.src.Sending;
|
||||
package vslab1.src.Sending;
|
||||
|
||||
public class TimeoutHandler {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @author Aaron Moser
|
||||
*/
|
||||
|
||||
package java.src;
|
||||
package vslab1.src;
|
||||
|
||||
public interface Terminatable {
|
||||
public void terminate();
|
||||
Reference in New Issue
Block a user