Обновленеи протокола, убран legacy код, переход на более практичную схему TLV

This commit is contained in:
RoyceDa
2026-04-18 17:49:58 +02:00
parent 9432969cb4
commit 068492b56d
20 changed files with 1353 additions and 528 deletions

View File

@@ -8,7 +8,7 @@ import io.orprotocol.BaseFailures;
import io.orprotocol.ProtocolException;
import io.orprotocol.Server;
import io.orprotocol.ServerFailures;
import io.orprotocol.Stream;
import io.orprotocol.frame.FrameEncoder;
import io.orprotocol.index.ClientIndexer;
import io.orprotocol.packet.Packet;
import io.orprotocol.packet.PacketManager;
@@ -41,6 +41,11 @@ public class Client {
private ClientIndexer clientIndexer;
private PacketManager packetManager;
/**
* Версия, которую поддерживает клиент
*/
private int version;
/**
* Создает нового клиента с указанным сокетом.
* Этот метод используется внутри протокола для управления подключениями клиентов.
@@ -57,6 +62,23 @@ public class Client {
this.packetManager = server.getPacketManager();
}
/**
* Устанавливает версию клиента
* @internal
* @param version
*/
public void setVersion(int version) {
this.version = version;
}
/**
* Получает версию клиента
* @return
*/
public int getVersion() {
return this.version;
}
/**
* Проверяет жив ли клиент на основе времени последнего heartbeat.
* Если с момента последнего heartbeat прошло больше, чем указанный интервал, клиент считается неактивным.
@@ -228,10 +250,15 @@ public class Client {
}
packet.packetId = packetId;
/**
* Записываем пакет в поток и отправляем его через сокет.
* Кодируем пакет в байты для отправки клиенту, c версии сервера (latest) до версии клиента,
* для дальнейшей отправки клиенту
*/
Stream stream = packet.write();
this.socket.send(stream.getBuffer());
FrameEncoder frameEncoder = new FrameEncoder(packet, this, this.packetManager);
byte[] encodedData = frameEncoder.encode();
/**
* Отправляем закодированные данные клиенту (уже закодированы под его версию)
*/
this.socket.send(encodedData);
}
/**