From dfdb746b59c9a09069ce0f276fc9066124daea8e Mon Sep 17 00:00:00 2001 From: RoyceDa Date: Mon, 9 Feb 2026 04:27:11 +0200 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20decline=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D0=B2,=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D1=82=D1=80=D0=B5=D0=B1=D1=83=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D1=80=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D0=BE=D0=BA?= =?UTF-8?q?=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rosetta/im/database/entity/Device.java | 6 +++++- .../im/executors/Executor24DeviceResolve.java | 14 ++++++++++++- .../java/io/orprotocol/client/Client.java | 21 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/rosetta/im/database/entity/Device.java b/src/main/java/com/rosetta/im/database/entity/Device.java index 53c4648..b8127ee 100644 --- a/src/main/java/com/rosetta/im/database/entity/Device.java +++ b/src/main/java/com/rosetta/im/database/entity/Device.java @@ -7,10 +7,14 @@ import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.Index; import jakarta.persistence.Table; @Entity -@Table(name = "devices") +@Table(name = "devices", indexes = { + @Index(name = "idx_public_key", columnList = "publicKey, deviceId", unique = true) +}) + public class Device extends CreateUpdateEntity { @Id diff --git a/src/main/java/com/rosetta/im/executors/Executor24DeviceResolve.java b/src/main/java/com/rosetta/im/executors/Executor24DeviceResolve.java index 11827a3..93fce90 100644 --- a/src/main/java/com/rosetta/im/executors/Executor24DeviceResolve.java +++ b/src/main/java/com/rosetta/im/executors/Executor24DeviceResolve.java @@ -14,6 +14,7 @@ import com.rosetta.im.packet.Packet0Handshake; import com.rosetta.im.packet.Packet24DeviceResolve; import com.rosetta.im.packet.runtime.DeviceSolution; import com.rosetta.im.packet.runtime.HandshakeStage; +import com.rosetta.im.service.dispatch.DeviceDispatcher; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; @@ -24,10 +25,12 @@ public class Executor24DeviceResolve extends PacketExecutor tagClass : this.eciTags.keySet()) { + if (this.clientIndexer != null) { + this.clientIndexer.removeTagIndex(this, tagClass); + } + } + this.eciTags.clear(); + } + + /** + * Удаляет данные клиента по указанному ключу. + * @param Тип данных. + * @param tagClass Класс данных для удаления. + */ + public void removeTag(Class tagClass) { + this.addTag(tagClass, null); + } /** * Переиндексирует тег клиента в индексе клиентов.