Обновленеи протокола, убран legacy код, переход на более практичную схему TLV
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user