package mc.protocol.packets;
import lombok.Data;
import mc.protocol.buffer.NetByteBuf;
/**
* Пинг-пакет.
*
*
Эхо-пакет, которым проверяется качество соединения между Клиентом и Сервером.
*
* Структура пакета
*
* | FIELD | TYPE | NOTES |
* |---------|------|------------------------|
* | Payload | Long | Любое уникальное число |
*
*
* По спецификации:
*
* если Сервер не ответил Клиенту в течении 20 секунд, Клиент отключается и выдаёт ошибку "Timed out";
* если Клиент не отвечает Серверу в течении 30 секунд, Сервер отключает Клиента.
*
*
* @see Keep Alive (clientbound)
* @see Keep Alive (serverbound)
*/
@Data
public class KeepAlivePacket implements ClientSidePacket, ServerSidePacket {
private long payload;
@Override
public void readSelf(NetByteBuf netByteBuf) {
payload = netByteBuf.readLong();
}
@Override
public void writeSelf(NetByteBuf netByteBuf) {
netByteBuf.writeLong(payload);
}
@Override
public void passivate() {
this.payload = 0;
}
}