Улучшенная типизация пакетов
This commit is contained in:
@@ -10,13 +10,6 @@ public abstract class Packet {
|
|||||||
public int packetId;
|
public int packetId;
|
||||||
public PacketManager packetManager;
|
public PacketManager packetManager;
|
||||||
|
|
||||||
/**
|
|
||||||
* Записывает данные пакета в поток. Исползуется при отправке
|
|
||||||
*
|
|
||||||
* @return Поток с записанными данными пакета.
|
|
||||||
*/
|
|
||||||
public abstract Stream write();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Читает данные пакета из потока. Используется при получении
|
* Читает данные пакета из потока. Используется при получении
|
||||||
*
|
*
|
||||||
@@ -24,4 +17,11 @@ public abstract class Packet {
|
|||||||
*/
|
*/
|
||||||
public abstract void read(Stream stream);
|
public abstract void read(Stream stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Записывает данные пакета в поток. Исползуется при отправке
|
||||||
|
*
|
||||||
|
* @return Поток с записанными данными пакета.
|
||||||
|
*/
|
||||||
|
public abstract Stream write();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import io.orprotocol.client.Client;
|
|||||||
/**
|
/**
|
||||||
* Базовый класс для обработчиков пакетов.
|
* Базовый класс для обработчиков пакетов.
|
||||||
*/
|
*/
|
||||||
public abstract class PacketExecutor {
|
public abstract class PacketExecutor<T> {
|
||||||
public Settings settings;
|
public Settings settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,5 +22,5 @@ public abstract class PacketExecutor {
|
|||||||
* @param packet Пакет, полученный от клиента.
|
* @param packet Пакет, полученный от клиента.
|
||||||
* @param client Клиент, отправивший пакет.
|
* @param client Клиент, отправивший пакет.
|
||||||
*/
|
*/
|
||||||
public abstract void onPacketReceived(Packet packet, Client client) throws Exception, ProtocolException;
|
public abstract void onPacketReceived(T packet, Client client) throws Exception, ProtocolException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import java.util.HashMap;
|
|||||||
public class PacketManager {
|
public class PacketManager {
|
||||||
|
|
||||||
private HashMap<Integer, Class<? extends Packet>> packets;
|
private HashMap<Integer, Class<? extends Packet>> packets;
|
||||||
private HashMap<Integer, PacketExecutor> executors;
|
private HashMap<Integer, PacketExecutor<?>> executors;
|
||||||
|
|
||||||
public PacketManager() {
|
public PacketManager() {
|
||||||
this.packets = new HashMap<>();
|
this.packets = new HashMap<>();
|
||||||
@@ -46,7 +46,7 @@ public class PacketManager {
|
|||||||
* Возвращает зарегистрированные исполнители пакетов.
|
* Возвращает зарегистрированные исполнители пакетов.
|
||||||
* @return Хэш-карта зарегистрированных исполнителей пакетов.
|
* @return Хэш-карта зарегистрированных исполнителей пакетов.
|
||||||
*/
|
*/
|
||||||
public HashMap<Integer, PacketExecutor> getExecutors() {
|
public HashMap<Integer, PacketExecutor<?>> getExecutors() {
|
||||||
return this.executors;
|
return this.executors;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ public class PacketManager {
|
|||||||
* @param packetId ID пакета
|
* @param packetId ID пакета
|
||||||
* @param executor Обработчик пакета
|
* @param executor Обработчик пакета
|
||||||
*/
|
*/
|
||||||
public void registerExecutor(int packetId, PacketExecutor executor) {
|
public void registerExecutor(int packetId, PacketExecutor<?> executor) {
|
||||||
if (this.executors == null) {
|
if (this.executors == null) {
|
||||||
this.executors = new HashMap<>();
|
this.executors = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user