add packet structure
This commit is contained in:
3
ChatApp/.gitignore
vendored
Normal file
3
ChatApp/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.vscode
|
||||||
|
bin
|
||||||
|
lib
|
||||||
18
ChatApp/README.md
Normal file
18
ChatApp/README.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
## Getting Started
|
||||||
|
|
||||||
|
Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code.
|
||||||
|
|
||||||
|
## Folder Structure
|
||||||
|
|
||||||
|
The workspace contains two folders by default, where:
|
||||||
|
|
||||||
|
- `src`: the folder to maintain sources
|
||||||
|
- `lib`: the folder to maintain dependencies
|
||||||
|
|
||||||
|
Meanwhile, the compiled output files will be generated in the `bin` folder by default.
|
||||||
|
|
||||||
|
> If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there.
|
||||||
|
|
||||||
|
## Dependency Management
|
||||||
|
|
||||||
|
The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies).
|
||||||
5
ChatApp/src/App.java
Normal file
5
ChatApp/src/App.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
public class App {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
System.out.println("Hello, World!");
|
||||||
|
}
|
||||||
|
}
|
||||||
9
ChatApp/src/network/protocol/Packet.java
Normal file
9
ChatApp/src/network/protocol/Packet.java
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package network.protocol;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public abstract class Packet implements Serializable {
|
||||||
|
|
||||||
|
public abstract void accept(PacketVisitor packetVisitor);
|
||||||
|
|
||||||
|
}
|
||||||
29
ChatApp/src/network/protocol/PacketVisitor.java
Normal file
29
ChatApp/src/network/protocol/PacketVisitor.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package network.protocol;
|
||||||
|
|
||||||
|
import network.protocol.packets.ChatMessagePacket;
|
||||||
|
import network.protocol.packets.CreateRoomPacket;
|
||||||
|
import network.protocol.packets.JoinRoomPacket;
|
||||||
|
import network.protocol.packets.LeaveRoomPacket;
|
||||||
|
import network.protocol.packets.LoginPacket;
|
||||||
|
import network.protocol.packets.RequestRoomListPacket;
|
||||||
|
import network.protocol.packets.RoomListPacket;
|
||||||
|
import network.protocol.packets.SendChatMessagePacket;
|
||||||
|
import network.protocol.packets.ServerResponsePacket;
|
||||||
|
|
||||||
|
public interface PacketVisitor {
|
||||||
|
|
||||||
|
default void visit(Packet packet) {
|
||||||
|
packet.accept(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void visitPacket(ChatMessagePacket packet);
|
||||||
|
void visitPacket(CreateRoomPacket packet);
|
||||||
|
void visitPacket(JoinRoomPacket packet);
|
||||||
|
void visitPacket(LeaveRoomPacket packet);
|
||||||
|
void visitPacket(LoginPacket packet);
|
||||||
|
void visitPacket(RequestRoomListPacket packet);
|
||||||
|
void visitPacket(RoomListPacket packet);
|
||||||
|
void visitPacket(SendChatMessagePacket packet);
|
||||||
|
void visitPacket(ServerResponsePacket packet);
|
||||||
|
|
||||||
|
}
|
||||||
15
ChatApp/src/network/protocol/Packets.java
Normal file
15
ChatApp/src/network/protocol/Packets.java
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package network.protocol;
|
||||||
|
|
||||||
|
public enum Packets {
|
||||||
|
|
||||||
|
ChatMessage,
|
||||||
|
CreateRoom,
|
||||||
|
JoinRoom,
|
||||||
|
LeaveRoom,
|
||||||
|
Login,
|
||||||
|
RequestRoom,
|
||||||
|
Response,
|
||||||
|
RoomList,
|
||||||
|
SendChatMessage,
|
||||||
|
|
||||||
|
}
|
||||||
40
ChatApp/src/network/protocol/packets/ChatMessagePacket.java
Normal file
40
ChatApp/src/network/protocol/packets/ChatMessagePacket.java
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class ChatMessagePacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
private final Instant time;
|
||||||
|
private final String chatter;
|
||||||
|
private final String content;
|
||||||
|
|
||||||
|
public ChatMessagePacket(Instant time, String chatter, String content) {
|
||||||
|
this.time = time;
|
||||||
|
this.chatter = chatter;
|
||||||
|
this.content = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Instant getTime() {
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChatter() {
|
||||||
|
return chatter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
26
ChatApp/src/network/protocol/packets/CreateRoomPacket.java
Normal file
26
ChatApp/src/network/protocol/packets/CreateRoomPacket.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class CreateRoomPacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
private final String roomName;
|
||||||
|
|
||||||
|
public CreateRoomPacket(String roomName) {
|
||||||
|
this.roomName = roomName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRoomName() {
|
||||||
|
return roomName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
26
ChatApp/src/network/protocol/packets/JoinRoomPacket.java
Normal file
26
ChatApp/src/network/protocol/packets/JoinRoomPacket.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class JoinRoomPacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
private final String roomName;
|
||||||
|
|
||||||
|
public JoinRoomPacket(String roomName) {
|
||||||
|
this.roomName = roomName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRoomName() {
|
||||||
|
return roomName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
19
ChatApp/src/network/protocol/packets/LeaveRoomPacket.java
Normal file
19
ChatApp/src/network/protocol/packets/LeaveRoomPacket.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class LeaveRoomPacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
public LeaveRoomPacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
26
ChatApp/src/network/protocol/packets/LoginPacket.java
Normal file
26
ChatApp/src/network/protocol/packets/LoginPacket.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class LoginPacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
private final String pseudo;
|
||||||
|
|
||||||
|
public LoginPacket(String pseudo) {
|
||||||
|
this.pseudo = pseudo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPseudo() {
|
||||||
|
return pseudo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class RequestRoomListPacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
|
||||||
|
public RequestRoomListPacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
28
ChatApp/src/network/protocol/packets/RoomListPacket.java
Normal file
28
ChatApp/src/network/protocol/packets/RoomListPacket.java
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class RoomListPacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
private final ArrayList<String> roomNames;
|
||||||
|
|
||||||
|
public RoomListPacket(ArrayList<String> roomNames) {
|
||||||
|
this.roomNames = roomNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getRoomNames() {
|
||||||
|
return roomNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 SendChatMessagePacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
private final String content;
|
||||||
|
|
||||||
|
public SendChatMessagePacket(String content) {
|
||||||
|
this.content = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package network.protocol.packets;
|
||||||
|
|
||||||
|
import network.protocol.Packet;
|
||||||
|
import network.protocol.PacketVisitor;
|
||||||
|
import network.protocol.Packets;
|
||||||
|
|
||||||
|
public class ServerResponsePacket extends Packet {
|
||||||
|
|
||||||
|
static private final long serialVersionUID = Packets.Login.ordinal();
|
||||||
|
|
||||||
|
public static enum Response {
|
||||||
|
AuthSuccess, AuthError, RoomCreated, RoomNotCreated, RoomJoined, RoomNotJoined, NotInRoom;
|
||||||
|
};
|
||||||
|
|
||||||
|
private final Response response;
|
||||||
|
|
||||||
|
public ServerResponsePacket(Response response) {
|
||||||
|
this.response = response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Response getResponse() {
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor packetVisitor) {
|
||||||
|
packetVisitor.visitPacket(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user