Система авторизации устройств пользователя
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Удаляет клиента из индекса тега
|
||||
|
||||
Reference in New Issue
Block a user