Skip to content

Commit 219bc55

Browse files
committed
v2 baseline
1 parent b7c4dc1 commit 219bc55

File tree

65 files changed

+103
-53
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+103
-53
lines changed

programming/sem2/lab5_v2/src/main/java/client/core/ClientCycle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
public class ClientCycle implements Runnable{
1111
public void run(){
12-
UDPDriver driver = new UDPDriver(4056);
12+
UDPDriver driver = new UDPDriver(4059,4056);
1313
NetworkManager networkManager = new NetworkManager(driver);
1414

1515
HashMap<String,String> hamp = new HashMap<>();

programming/sem2/lab5_v2/src/main/java/client/core/Engine.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import client.network.drivers.UDPDriver;
88

99
public final class Engine {
10-
UDPDriver driver = new UDPDriver(4056);
10+
UDPDriver driver = new UDPDriver(4059, 4056);
1111
NetworkManager networkManager = new NetworkManager(driver);
1212

1313
private static final BasicCommand[] commands = {new Help(), new Add(), new Info(),

programming/sem2/lab5_v2/src/main/java/client/network/NetworkManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public NetworkManager(INetworkDriver driver) {
1313
this.driver.init();
1414
}
1515
catch (Exception e){
16-
16+
System.out.println(e.getMessage());
1717
}
1818
}
1919

programming/sem2/lab5_v2/src/main/java/client/network/drivers/UDPDriver.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,40 @@
11
package client.network.drivers;
22

33
import java.io.IOException;
4+
import java.lang.annotation.Target;
45
import java.net.InetSocketAddress;
56
import java.net.SocketAddress;
67
import java.net.SocketException;
78
import java.nio.ByteBuffer;
89
import java.nio.channels.DatagramChannel;
910

1011
public class UDPDriver implements INetworkDriver {
12+
int myPort;
13+
int targetPort;
14+
1115
DatagramChannel channel;
12-
int port;
13-
SocketAddress addr;
16+
SocketAddress myAddr;
17+
SocketAddress targetAddr;
1418
private final int PACKET_SIZE = 1024;
1519
private final int DATA_SIZE = PACKET_SIZE - 1;
1620

17-
public UDPDriver(int port) {
18-
this.port = port;
21+
public UDPDriver(int myPort, int targetPort) {
22+
this.myPort = myPort;
23+
this.targetPort = targetPort;
1924
}
2025

2126
public void init() throws SocketException, IOException{
22-
addr = new InetSocketAddress(port);
27+
myAddr = new InetSocketAddress(myPort);
28+
targetAddr = new InetSocketAddress(targetPort);
29+
2330
channel = DatagramChannel.open();
24-
channel.bind(addr);
25-
channel.configureBlocking(false);
31+
channel.bind(myAddr);
32+
channel.configureBlocking(true);
2633
}
2734

2835
public void send(byte[] data) throws IOException {
2936
ByteBuffer buf = ByteBuffer.wrap(data);
30-
channel.send(buf, addr);
37+
channel.send(buf, targetAddr);
3138
}
3239

3340
public byte[] receive() throws IOException{
@@ -36,7 +43,7 @@ public byte[] receive() throws IOException{
3643
System.out.println("receiving...");
3744
System.out.println(buf);
3845

39-
addr = channel.receive(buf);
46+
SocketAddress addr = channel.receive(buf);
4047

4148
System.out.println("received: " + addr);
4249

programming/sem2/lab5_v2/src/main/java/server/core/Engine.java

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
package server.core;
22

3-
import server.network.NetworkCycle;
4-
import server.network.serializers.implementations.BinarySerializer;
5-
import shared.objects.NetworkRequestDTO;
6-
import server.network.drivers.implementations.UDPDriver;
7-
import shared.objects.NetworkResponseDTO;
8-
import server.storage.collection.drivers.implementations.DequeDriver;
9-
import server.storage.commands.CommandsManager;
10-
11-
import java.util.ArrayDeque;
123
import java.util.HashMap;
134
import java.util.Queue;
145
import java.util.concurrent.CompletableFuture;
6+
import java.util.concurrent.ConcurrentLinkedQueue;
157
import java.util.concurrent.ExecutorService;
168
import java.util.concurrent.Executors;
179

10+
import server.network.NetworkContainer;
11+
import server.network.NetworkCycle;
12+
import server.network.drivers.implementations.UDPDriver;
13+
import server.network.serializers.implementations.BinarySerializer;
14+
import server.storage.collection.drivers.implementations.DequeDriver;
15+
import server.storage.commands.CommandsManager;
16+
import shared.objects.NetworkRequestDTO;
17+
import shared.objects.NetworkResponseDTO;
18+
1819
public class Engine {
19-
private final Queue<NetworkRequestDTO> networkReceived = new ArrayDeque<>();
20-
private final Queue<NetworkResponseDTO> networkToSend = new ArrayDeque<>();
20+
private final Queue<NetworkContainer<NetworkRequestDTO>> networkReceived = new ConcurrentLinkedQueue<>();
21+
private final Queue<NetworkContainer<NetworkResponseDTO>> networkToSend = new ConcurrentLinkedQueue<>();
2122

2223
private final ExecutorService executor = Executors.newFixedThreadPool(10);
2324
private final CommandsManager cm = new CommandsManager(
@@ -38,22 +39,26 @@ public Engine(){
3839

3940
public void mainCycle(){
4041
try{
41-
Thread.sleep(1);
42+
//Thread.sleep(1);
43+
//System.out.println(networkReceived.size());
4244
if (!networkReceived.isEmpty()){
4345
System.out.println("Received from get");
44-
NetworkRequestDTO networkRequestDTO = networkReceived.remove();
46+
NetworkContainer<NetworkRequestDTO> networkRequestDTO = networkReceived.remove();
4547
System.out.println(networkRequestDTO);
4648

4749
CompletableFuture<HashMap<String,String>> future = cm.run(
48-
networkRequestDTO.opName(),
49-
networkRequestDTO.args(),
50+
networkRequestDTO.data().opName(),
51+
networkRequestDTO.data().args(),
5052
this.executor
5153
);
5254
future.thenApply(
5355
res->{
5456
System.out.println("fapl: " + res.toString());
5557
return networkToSend.add(
56-
new NetworkResponseDTO(res)
58+
new NetworkContainer<>(
59+
networkRequestDTO.socketAddress(),
60+
new NetworkResponseDTO(res)
61+
)
5762
);
5863
}
5964
);
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package server.network;
2+
3+
import java.net.SocketAddress;
4+
5+
public record NetworkContainer<T> (SocketAddress socketAddress, T data) {}

programming/sem2/lab5_v2/src/main/java/server/network/NetworkCycle.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99

1010
public class NetworkCycle implements Runnable{
1111
private final NetworkManager nm;
12-
public final Queue<NetworkRequestDTO> inpQueue;
13-
public final Queue<NetworkResponseDTO> outQueue;
12+
public final Queue<NetworkContainer<NetworkRequestDTO>> inpQueue;
13+
public final Queue<NetworkContainer<NetworkResponseDTO>> outQueue;
1414

1515
public NetworkCycle(
1616
INetworkDriver nd,
1717
INetworkSerializers serializer,
18-
Queue<NetworkRequestDTO> inpQueue,
19-
Queue<NetworkResponseDTO> outQueue
18+
Queue<NetworkContainer<NetworkRequestDTO>> inpQueue,
19+
Queue<NetworkContainer<NetworkResponseDTO>> outQueue
2020
){
2121
this.nm = new NetworkManager(
2222
nd,

programming/sem2/lab5_v2/src/main/java/server/network/NetworkManager.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,31 @@ public NetworkManager(INetworkDriver driver, INetworkSerializers serializer) {
2525
}
2626
}
2727

28-
public void send(Queue<NetworkResponseDTO> outQueue) throws IOException{
29-
NetworkResponseDTO r1 = outQueue.poll();
28+
public void send(Queue<NetworkContainer<NetworkResponseDTO>> outQueue) throws IOException{
29+
NetworkContainer<NetworkResponseDTO> r1 = outQueue.poll();
3030
if(r1 == null){return;}
3131
System.out.println(r1);
32+
3233
this.driver.send(
33-
this.serializer.serialize(
34-
outQueue.poll()
34+
new NetworkContainer<> (
35+
r1.socketAddress(),
36+
this.serializer.serialize(
37+
r1.data()
38+
)
3539
)
3640
);
3741
System.out.println(r1);
3842
}
39-
public void receive(Queue<NetworkRequestDTO> inpQueue) throws IOException, ClassNotFoundException{
43+
public void receive(Queue<NetworkContainer<NetworkRequestDTO>> inpQueue) throws IOException, ClassNotFoundException{
4044
try {
45+
NetworkContainer<byte[]> nc = this.driver.receive();
4146
inpQueue.add(
42-
this.serializer.deserialize(
43-
this.driver.receive()
44-
)
47+
new NetworkContainer<>(
48+
nc.socketAddress(),
49+
this.serializer.deserialize(
50+
nc.data()
51+
)
52+
)
4553
);
4654
}
4755
catch (Exception e){}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package server.network.drivers;
22

3+
import server.network.NetworkContainer;
4+
35
import java.io.IOException;
46
import java.net.SocketException;
57

68
public interface INetworkDriver {
79
public void init() throws SocketException, IOException;
8-
public void send(byte[] data) throws IOException;
9-
public byte[] receive() throws IOException;
10+
public void send(NetworkContainer<byte[]> data) throws IOException;
11+
public NetworkContainer<byte[]> receive() throws IOException;
1012
}

programming/sem2/lab5_v2/src/main/java/server/network/drivers/implementations/UDPDriver.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package server.network.drivers.implementations;
22

33
import server.network.drivers.INetworkDriver;
4+
import server.network.NetworkContainer;
45

56
import java.io.IOException;
67
import java.net.InetSocketAddress;
@@ -27,16 +28,19 @@ public void init() throws SocketException, IOException{
2728
channel.configureBlocking(false);
2829
}
2930

30-
public void send(byte[] data) throws IOException {
31-
ByteBuffer buf = ByteBuffer.wrap(data);
32-
channel.send(buf, addr);
31+
public void send(NetworkContainer<byte[]> data) throws IOException {
32+
ByteBuffer buf = ByteBuffer.wrap(data.data());
33+
channel.send(buf, data.socketAddress());
3334
}
3435

35-
public byte[] receive() throws IOException{
36+
public NetworkContainer<byte[]> receive() throws IOException{
3637
ByteBuffer buf = ByteBuffer.allocate(DATA_SIZE);
3738
addr = channel.receive(buf);
3839
if (addr != null) {
39-
return buf.array();
40+
return new NetworkContainer<>(
41+
addr,
42+
buf.array()
43+
);
4044
}
4145
return null;
4246
}

0 commit comments

Comments
 (0)