史诗级大饼,请叫我黑饼王。

This commit is contained in:
坏黑
2018-08-23 23:59:20 +08:00
parent 600ac49622
commit 24556b9f2a
64 changed files with 2683 additions and 944 deletions

View File

@@ -0,0 +1,45 @@
package me.skymc.taboolib.socket.packet;
import com.google.gson.JsonObject;
import java.util.UUID;
/**
* @Author sky
* @Since 2018-08-22 23:01
*/
public abstract class Packet {
private final int port;
private final String uid;
public Packet(int port) {
this.port = port;
this.uid = UUID.randomUUID().toString();
}
public int getPort() {
return port;
}
public String getUid() {
return uid;
}
public void readOnServer() {
}
public void readOnClient() {
}
public void serialize(JsonObject json) {
}
public void unSerialize(JsonObject json) {
}
}

View File

@@ -0,0 +1,44 @@
package me.skymc.taboolib.socket.packet;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import me.skymc.taboolib.socket.packet.impl.PacketEmpty;
/**
* @Author sky
* @Since 2018-08-22 23:32
*/
public class PacketSerializer {
private static PacketParser parser = new PacketParser();
public static String serialize(Packet packet) {
JsonObject json = new JsonObject();
json.addProperty("uid", packet.getUid());
json.addProperty("port", packet.getPort());
json.addProperty("packet", packet.getClass().getAnnotation(PacketType.class).name());
packet.serialize(json);
return json.toString();
}
public static Packet unSerialize(String origin) {
Packet packet = null;
try {
packet = parser.parser((JsonObject) new JsonParser().parse(origin));
} catch (JsonSyntaxException e) {
e.printStackTrace();
}
return packet == null ? new PacketEmpty(0) : packet;
}
// *********************************
//
// Getter and Setter
//
// *********************************
public static PacketParser getParser() {
return parser;
}
}

View File

@@ -0,0 +1,18 @@
package me.skymc.taboolib.socket.packet;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @Author sky
* @Since 2018-08-22 23:09
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PacketType {
String name();
}

View File

@@ -0,0 +1,26 @@
package me.skymc.taboolib.socket.packet.impl;
import me.skymc.taboolib.socket.TabooLibServer;
import me.skymc.taboolib.socket.packet.Packet;
import me.skymc.taboolib.socket.packet.PacketType;
/**
* @Author sky
* @Since 2018-08-22 23:01
*/
@PacketType(name = "alive")
public class PacketAlive extends Packet {
public PacketAlive(int port) {
super(port);
}
@Override
public void readOnServer() {
TabooLibServer.getConnection(getPort()).ifPresent(connect -> connect.getValue().setLatestResponse(System.currentTimeMillis()));
}
@Override
public void readOnClient() {
}
}

View File

@@ -0,0 +1,24 @@
package me.skymc.taboolib.socket.packet.impl;
import me.skymc.taboolib.socket.packet.Packet;
import me.skymc.taboolib.socket.packet.PacketType;
/**
* @Author sky
* @Since 2018-08-22 23:01
*/
@PacketType(name = "empty")
public class PacketEmpty extends Packet {
public PacketEmpty(int port) {
super(port);
}
@Override
public void readOnServer() {
}
@Override
public void readOnClient() {
}
}

View File

@@ -0,0 +1,29 @@
package me.skymc.taboolib.socket.packet.impl;
import me.skymc.taboolib.socket.TabooLibClient;
import me.skymc.taboolib.socket.packet.Packet;
import me.skymc.taboolib.socket.packet.PacketType;
/**
* @Author sky
* @Since 2018-08-22 23:01
*/
@PacketType(name = "heartbeat")
public class PacketHeartbeat extends Packet {
public PacketHeartbeat(int port) {
super(port);
}
@Override
public void readOnServer() {
}
@Override
public void readOnClient() {
// 更新响应时间
TabooLibClient.setLatestResponse(System.currentTimeMillis());
// 回应服务端
TabooLibClient.sendPacket(new PacketAlive(TabooLibClient.getSocket().getLocalPort()));
}
}

View File

@@ -0,0 +1,28 @@
package me.skymc.taboolib.socket.packet.impl;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.socket.TabooLibServer;
import me.skymc.taboolib.socket.packet.Packet;
import me.skymc.taboolib.socket.packet.PacketType;
/**
* @Author sky
* @Since 2018-08-22 23:38
*/
@PacketType(name = "join")
public class PacketJoin extends Packet {
public PacketJoin(int port) {
super(port);
}
@Override
public void readOnServer() {
TabooLibServer.println("Client " + getPort() + " joined Communication Area.");
}
@Override
public void readOnClient() {
TLocale.sendToConsole("COMMUNICATION.CLIENT-JOINED", String.valueOf(getPort()));
}
}

View File

@@ -0,0 +1,46 @@
package me.skymc.taboolib.socket.packet.impl;
import com.google.gson.JsonObject;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.socket.TabooLibServer;
import me.skymc.taboolib.socket.packet.Packet;
import me.skymc.taboolib.socket.packet.PacketType;
/**
* @Author sky
* @Since 2018-08-22 23:01
*/
@PacketType(name = "message")
public class PacketMessage extends Packet {
private String message;
public PacketMessage(int port) {
this(port, "none");
}
public PacketMessage(int port, String message) {
super(port);
this.message = message;
}
@Override
public void readOnServer() {
TabooLibServer.println(message);
}
@Override
public void readOnClient() {
TLocale.sendToConsole("COMMUNICATION.PACKET-MESSAGE", String.valueOf(getPort()), message);
}
@Override
public void serialize(JsonObject json) {
json.addProperty("message", message);
}
@Override
public void unSerialize(JsonObject json) {
message = json.get("message").getAsString();
}
}

View File

@@ -0,0 +1,56 @@
package me.skymc.taboolib.socket.packet.impl;
import com.google.gson.JsonObject;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.socket.TabooLibServer;
import me.skymc.taboolib.socket.packet.Packet;
import me.skymc.taboolib.socket.packet.PacketType;
/**
* @Author sky
* @Since 2018-08-22 23:38
*/
@PacketType(name = "quit")
public class PacketQuit extends Packet {
private String message;
public PacketQuit(int port) {
this(port, "connect closed.");
}
public PacketQuit(int port, String message) {
super(port);
this.message = message;
}
@Override
public void readOnServer() {
TabooLibServer.getConnection(getPort()).ifPresent(connection -> {
// 注销连接
TabooLibServer.getClient().remove(connection.getKey());
// 关闭连接
try {
connection.getValue().getSocket().close();
} catch (Exception ignored) {
}
// 提示信息
TabooLibServer.println("Client " + getPort() + " leaved Communication Area: " + message);
});
}
@Override
public void readOnClient() {
TLocale.sendToConsole("COMMUNICATION.CLIENT-QUITED", String.valueOf(getPort()));
}
@Override
public void serialize(JsonObject json) {
json.addProperty("message", message);
}
@Override
public void unSerialize(JsonObject json) {
message = json.get("message").getAsString();
}
}