This commit is contained in:
11
app/src/main/java/network/protocol/Packet.java
Normal file
11
app/src/main/java/network/protocol/Packet.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package network.protocol;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public abstract class Packet implements Serializable {
|
||||
|
||||
// public abstract int getId();
|
||||
|
||||
public abstract void accept(PacketVisitor packetVisitor);
|
||||
|
||||
}
|
||||
28
app/src/main/java/network/protocol/PacketDispatcher.java
Normal file
28
app/src/main/java/network/protocol/PacketDispatcher.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package network.protocol;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PacketDispatcher {
|
||||
|
||||
private final List<PacketVisitor> handlers;
|
||||
|
||||
public PacketDispatcher() {
|
||||
this.handlers = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void dispatch(Packet packet) {
|
||||
for (PacketVisitor handler : handlers) {
|
||||
handler.visitPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public void registerHandler(PacketVisitor handler) {
|
||||
handlers.add(handler);
|
||||
}
|
||||
|
||||
public void unregisterHandler(PacketVisitor handler) {
|
||||
handlers.remove(handler);
|
||||
}
|
||||
|
||||
}
|
||||
6
app/src/main/java/network/protocol/PacketFactory.java
Normal file
6
app/src/main/java/network/protocol/PacketFactory.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package network.protocol;
|
||||
|
||||
public class PacketFactory {
|
||||
|
||||
|
||||
}
|
||||
17
app/src/main/java/network/protocol/PacketVisitor.java
Normal file
17
app/src/main/java/network/protocol/PacketVisitor.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package network.protocol;
|
||||
|
||||
import network.protocol.packets.ConnexionInfoPacket;
|
||||
import network.protocol.packets.DisconnectPacket;
|
||||
import network.protocol.packets.KeepAlivePacket;
|
||||
|
||||
public interface PacketVisitor {
|
||||
|
||||
default void visitPacket(Packet packet) {
|
||||
packet.accept(this);
|
||||
}
|
||||
|
||||
void visitPacket(ConnexionInfoPacket packet);
|
||||
void visitPacket(DisconnectPacket packet);
|
||||
void visitPacket(KeepAlivePacket packet);
|
||||
|
||||
}
|
||||
7
app/src/main/java/network/protocol/Packets.java
Normal file
7
app/src/main/java/network/protocol/Packets.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package network.protocol;
|
||||
|
||||
public enum Packets {
|
||||
|
||||
ConnectionInfo, KeepAlive, Disconnect
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package network.protocol.packets;
|
||||
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
import network.protocol.Packets;
|
||||
|
||||
public class ConnexionInfoPacket extends Packet {
|
||||
|
||||
static private final long serialVersionUID = Packets.ConnectionInfo.ordinal();
|
||||
|
||||
private final int connectionId;
|
||||
|
||||
public ConnexionInfoPacket(int connectionId) {
|
||||
this.connectionId = connectionId;
|
||||
}
|
||||
|
||||
public int getConnectionId() {
|
||||
return connectionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(PacketVisitor packetVisitor) {
|
||||
packetVisitor.visitPacket(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package network.protocol.packets;
|
||||
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
|
||||
public class DisconnectPacket extends Packet {
|
||||
|
||||
private final String reason;
|
||||
|
||||
public DisconnectPacket(String reason) {
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
public String getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(PacketVisitor packetVisitor) {
|
||||
packetVisitor.visitPacket(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package network.protocol.packets;
|
||||
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
import network.protocol.Packets;
|
||||
|
||||
public class KeepAlivePacket extends Packet {
|
||||
|
||||
static private final long serialVersionUID = Packets.KeepAlive.ordinal();
|
||||
|
||||
private final long keepAliveId;
|
||||
|
||||
public KeepAlivePacket(long keepAliveId) {
|
||||
this.keepAliveId = keepAliveId;
|
||||
}
|
||||
|
||||
public long getKeepAliveId() {
|
||||
return keepAliveId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(PacketVisitor packetVisitor) {
|
||||
packetVisitor.visitPacket(this);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user