Обновление ECI, репозитории, девайсы

This commit is contained in:
RoyceDa
2026-02-03 02:28:46 +02:00
parent c22d2de4be
commit 4c290a01ac
19 changed files with 513 additions and 359 deletions

View File

@@ -9,9 +9,9 @@ public class Settings {
* Интервал отправки heartbeat пакетов в секундах.
* Если клиент не отправляет heartbeat пакеты в течение этого времени, сервер может считать его отключенным.
*/
public long heartbeatInterval = 30;
public int heartbeatInterval = 30;
public Settings(int port, long heartbeatInterval) {
public Settings(int port, int heartbeatInterval) {
this.port = port;
this.heartbeatInterval = heartbeatInterval;
}

View File

@@ -1,7 +1,6 @@
package io.orprotocol.client;
import java.util.HashSet;
import java.util.Set;
import java.util.HashMap;
import org.java_websocket.WebSocket;
@@ -23,7 +22,7 @@ public class Client {
/**
* Любые данные, связанные с клиентом.
*/
public Set<ECITag> eciTags;
public HashMap<Class<? extends ECITag>, ECITag> eciTags;
/**
* Интервал отправки heartbeat пакетов в миллисекундах.
*/
@@ -44,7 +43,7 @@ public class Client {
public Client(WebSocket socket, long heartbeatInterval, PacketManager packetManager) {
this.socket = socket;
this.clientId = StringUtil.randomString(32);
this.eciTags = new HashSet<ECITag>();
this.eciTags = new HashMap<Class<? extends ECITag>, ECITag>();
this.heartbeatInterval = heartbeatInterval;
this.lastHeartbeatTime = System.currentTimeMillis();
this.packetManager = new PacketManager();
@@ -80,7 +79,7 @@ public class Client {
* Получает данные, связанные с клиентом.
* @return Данные клиента.
*/
public Set<ECITag> getEciTags() {
public HashMap<Class<? extends ECITag>, ECITag> getEciTags() {
return this.eciTags;
}
@@ -98,14 +97,14 @@ public class Client {
* @param value Значение данных.
*/
public <T extends ECITag> void addTag(T eciTag) {
this.eciTags.add(eciTag);
this.eciTags.put(eciTag.getClass(), eciTag);
}
/**
* Устанавливает данные клиента.
* @param data Данные клиента.
*/
public void setTags(Set<ECITag> eciTags) {
public void setTags(HashMap<Class<? extends ECITag>, ECITag> eciTags) {
this.eciTags = eciTags;
}
@@ -114,13 +113,8 @@ public class Client {
* @param key Ключ данных.
* @return Значение данных.
*/
public <T extends ECITag> T getTag(ECITag eciTag) {
for (ECITag tag : this.eciTags) {
if (tag.getKey().equals(eciTag.getKey())) {
return (T) tag;
}
}
return null;
public <T extends ECITag> T getTag(Class<? extends ECITag> eciTagClass) {
return (T) this.eciTags.get(eciTagClass);
}
/**
@@ -128,13 +122,9 @@ public class Client {
* @param key Ключ данных.
* @return true если данные существуют, иначе false.
*/
public boolean hasTag(ECITag eciTag) {
for (ECITag tag : this.eciTags) {
if (tag.getKey().equals(eciTag.getKey())) {
return true;
}
}
return false;
public boolean hasTag(Class<? extends ECITag> eciTagClass) {
return this.eciTags.containsKey(eciTagClass);
}
/**

View File

@@ -5,27 +5,4 @@ package io.orprotocol.client;
*
* Используется для хранения дополнительной информации о клиенте.
*/
public abstract class ECITag {
/**
* Ключ тега.
*/
public String key;
/**
* Создает новый тег с указанным ключом и значением.
* @param key Ключ тега.
*/
public ECITag(String key) {
this.key = key;
}
/**
* Получает ключ тега.
* @return Ключ тега.
*/
public String getKey() {
return this.key;
}
}
public abstract class ECITag {}