Система авторизации устройств пользователя

This commit is contained in:
RoyceDa
2026-02-09 04:13:32 +02:00
parent 7232fcb903
commit 193640f46a
21 changed files with 753 additions and 32 deletions

View File

@@ -60,11 +60,14 @@ public class Server extends WebSocketServer {
return;
}
Client client = socket.getAttachment();
this.listener.onClientDisconnect(this, client);
/**
* Удаляем клиента из индексации (потому что он вышел)
*/
this.clientIndexer.removeClientFromIndex(client);
/**
* Вызываем событие отключения клиента
*/
this.listener.onClientDisconnect(this, client);
}
@Override
@@ -232,6 +235,11 @@ public class Server extends WebSocketServer {
* Останавливаем сервер при завершении работы и вызываем слушатели остановки сервера.
*/
this.listener.onServerStop(this);
try {
this.stop();
} catch (InterruptedException e) {
e.printStackTrace();
}
}));
}
}

View File

@@ -114,6 +114,15 @@ public class Client {
}
}
/**
* Переиндексирует тег клиента в индексе клиентов.
* @param tagClass
* @param eciTag
*/
public <T extends ECITag> void reindexTag(Class<T> tagClass, T eciTag) {
this.clientIndexer.reindexTag(this, tagClass, eciTag);
}
/**
* Получает данные клиента по указанному ключу.
* @param key Ключ данных.
@@ -168,6 +177,9 @@ public class Client {
* @param packet Пакет для отправки.
*/
public void send(Packet packet) throws ProtocolException {
if(!this.socket.isOpen()){
return;
}
Integer packetId = this.packetManager.getPacketIdByClass(packet.getClass());
if(packetId == null) {
throw new ProtocolException("Unknown packet class: " + packet.getClass().getName());

View File

@@ -94,6 +94,23 @@ public class ClientIndexer {
}
}
/**
* Переиндексирует тег клиента в индексе клиентов.
* @param <T> тип тега
* @param client клиент для которого нужно переиндексировать тег
* @param tagClass класс тега
* @param tag тег с новыми данными для переиндексации
*/
public <T extends ECITag> void reindexTag(Client client, Class<T> tagClass, T tag) {
/**
* Ведет на тот же метод что и индексация, так как индексация по умолчанию
* удаляет старые индексы и практически всегда делает реиндекс. Нужно для
* удобного и читаемого API, чтобы вызывающий код не выглядел так, как будто постоянно
* индексирует новые данные
*/
this.indexTag(client, tagClass, tag);
}
/**
* Удаляет клиента из индекса тега