network: remove ack by default

This commit is contained in:
2025-03-06 11:48:59 +01:00
parent c8a748fe71
commit 72c62bb1b4
3 changed files with 20 additions and 16 deletions

View File

@@ -78,13 +78,13 @@ public class PacketPool {
private void debugSend(ReliablePacket packet, InetSocketAddress address) { private void debugSend(ReliablePacket packet, InetSocketAddress address) {
boolean client = address.getPort() == 6665; boolean client = address.getPort() == 6665;
debugPrint((client ? "[Client]" : "[Server]") + " Sent " + packet.getPacket().getClass().getName() debugPrint((client ? "[Client]" : "[Server]") + " Sent " + packet.getPacket().getClass().getName()
+ " with seq : " + packet.getSeq() + " and ack " + packet.getAck()); + " with seq : " + packet.getSeq());
} }
private void debugRecv(ReliablePacket packet, InetSocketAddress address) { private void debugRecv(ReliablePacket packet, InetSocketAddress address) {
boolean client = address.getPort() == 6665; boolean client = address.getPort() == 6665;
debugPrint((client ? "[Client]" : "[Server]") + " Received " + packet.getPacket().getClass().getName() debugPrint((client ? "[Client]" : "[Server]") + " Received " + packet.getPacket().getClass().getName()
+ " with seq : " + packet.getSeq() + " and ack " + packet.getAck()); + " with seq : " + packet.getSeq());
} }
private void sendPacketToSocket(ReliablePacket packet, InetSocketAddress address) throws IOException { private void sendPacketToSocket(ReliablePacket packet, InetSocketAddress address) throws IOException {
@@ -119,7 +119,7 @@ public class PacketPool {
public synchronized void sendPacket(Packet packet, InetSocketAddress address) throws IOException { public synchronized void sendPacket(Packet packet, InetSocketAddress address) throws IOException {
tryAddContext(address); tryAddContext(address);
ReliablePacket reliablePacket = new ReliablePacket(packet, getNextSeqSend(address), -1); ReliablePacket reliablePacket = new ReliablePacket(packet, getNextSeqSend(address));
sendPacket(reliablePacket, address); sendPacket(reliablePacket, address);
} }
@@ -187,11 +187,11 @@ public class PacketPool {
var packetsSentTries = this.addressContexts.get(address).packetsSentTries; var packetsSentTries = this.addressContexts.get(address).packetsSentTries;
if (packet.getPacket() instanceof AcknowlegdementPacket) { if (packet.getPacket() instanceof AcknowlegdementPacket ackPacket) {
assert (packet.getAck() != -1); assert (ackPacket.getAck() != -1);
for (var entry : packetsSentTries.entrySet()) { for (var entry : packetsSentTries.entrySet()) {
ReliablePacket reliablePacket = entry.getKey(); ReliablePacket reliablePacket = entry.getKey();
if (entry.getKey().getSeq() == packet.getAck()) { if (entry.getKey().getSeq() == ackPacket.getAck()) {
packetsSentTries.remove(reliablePacket); packetsSentTries.remove(reliablePacket);
break; break;
} }
@@ -202,21 +202,21 @@ public class PacketPool {
if (this.addressContexts.get(address).packetRecvBuffer.contains(packet)) { if (this.addressContexts.get(address).packetRecvBuffer.contains(packet)) {
debugPrint("The packet has already been received !"); debugPrint("The packet has already been received !");
sendPacketToSocket( sendPacketToSocket(
new ReliablePacket(new AcknowlegdementPacket(), -1, packet.getSeq()), address); new ReliablePacket(new AcknowlegdementPacket(packet.getSeq()), -1), address);
return; return;
} }
if (packet.getSeq() < getCurrentSeqRecv(address)) { if (packet.getSeq() < getCurrentSeqRecv(address)) {
debugPrint("Packet too old, current : " + getCurrentSeqRecv(address)); debugPrint("Packet too old, current : " + getCurrentSeqRecv(address));
sendPacketToSocket( sendPacketToSocket(
new ReliablePacket(new AcknowlegdementPacket(), -1, packet.getSeq()), address); new ReliablePacket(new AcknowlegdementPacket(packet.getSeq()), -1), address);
return; return;
} }
this.addressContexts.get(address).packetRecvBuffer.add(packet); this.addressContexts.get(address).packetRecvBuffer.add(packet);
debugRecv(packet, address); debugRecv(packet, address);
sendPacketToSocket( sendPacketToSocket(
new ReliablePacket(new AcknowlegdementPacket(), -1, packet.getSeq()), address); new ReliablePacket(new AcknowlegdementPacket(packet.getSeq()), -1), address);
// got the packet in the right order // got the packet in the right order
if (packet.getSeq() == getCurrentSeqRecv(address)) { if (packet.getSeq() == getCurrentSeqRecv(address)) {

View File

@@ -8,22 +8,16 @@ public class ReliablePacket implements Serializable {
private final Packet packet; private final Packet packet;
private final int seq; private final int seq;
private final int ack;
public ReliablePacket(Packet packet, int seq, int ack) { public ReliablePacket(Packet packet, int seq) {
this.packet = packet; this.packet = packet;
this.seq = seq; this.seq = seq;
this.ack = ack;
} }
public Packet getPacket() { public Packet getPacket() {
return packet; return packet;
} }
public int getAck() {
return ack;
}
public int getSeq() { public int getSeq() {
return seq; return seq;
} }

View File

@@ -5,9 +5,19 @@ import network.protocol.PacketVisitor;
public class AcknowlegdementPacket extends Packet { public class AcknowlegdementPacket extends Packet {
private final int ack;
public AcknowlegdementPacket(int ack) {
this.ack = ack;
}
@Override @Override
public void accept(PacketVisitor packetVisitor) { public void accept(PacketVisitor packetVisitor) {
} }
public int getAck() {
return ack;
}
} }