Синхронизация сообщений, чтения в группах, синхронизация ключей групп

This commit is contained in:
RoyceDa
2026-02-24 18:15:22 +02:00
parent 773659c2ba
commit 0e240d1eeb
7 changed files with 101 additions and 59 deletions

View File

@@ -53,7 +53,7 @@ public class ClientManager {
}
/**
* Отправить пакет всем АВТОРИЗОВАННЫМ клиентам с публичным ключом publicKey
* Отправить пакет ВСЕМ АВТОРИЗОВАННЫМ клиентам с публичным ключом publicKey
* @param publicKey публичный ключ получателя
* @param packet пакет для отправки
* @throws ProtocolException если произошла ошибка при отправке пакета клиенту
@@ -83,6 +83,34 @@ public class ClientManager {
}
}
/**
* Отправить пакет всем клиентам с публичными ключом как у client, кроме клиента client, который является отправителем и не должен получать этот пакет
* @param client клиент
* @param packet пакет для отправки
* @throws ProtocolException
*/
public void retranslate(Client client, Packet packet) throws ProtocolException{
ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class);
HashSet<Client> clients = this.clientIndexer
.getClients(ECIAuthentificate.class, "publicKey", eciAuthentificate.getPublicKey());
if(clients == null){
/**
* Нет авторизованных сессий с таким публичным ключом
*/
return;
}
for(Client c : clients){
/**
* Проходим по всем устройствам с таким публичным ключом и ретранслируем им пакет, кроме того устройства что
* отправило пакет
*/
if(c.equals(client)){
continue;
}
c.send(packet);
}
}
/**
* Отправить пакет всем клиентам с публичными ключами из списка publicKeys
* @param publicKeys список публичных ключей получателей