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