From 00ca218c06d31f5c7373cb0ba266bbf504f83e02 Mon Sep 17 00:00:00 2001 From: Royce59 Date: Sun, 19 Apr 2026 01:00:07 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D1=8B=20=D0=B2=D1=81=D0=B5=20Executors=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=BA=D0=BE=D0=BB,=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D1=8B=20=D0=B2=D1=81=D0=B5?= =?UTF-8?q?=20=D1=81=D0=BB=D1=83=D1=88=D0=B0=D1=82=D0=B5=D0=BB=D0=B8=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BF=D1=80=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=BA=D0=BE=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/im/rosetta/Boot.java | 8 +-- .../im/rosetta/database/entity/PushToken.java | 2 +- .../executors/Executor28IceServers.java | 28 ---------- ...esolve.java => ExecutorDeviceResolve.java} | 20 +++---- ...r22GroupBan.java => ExecutorGroupBan.java} | 11 ++-- ...upCreate.java => ExecutorGroupCreate.java} | 6 +-- ...8GroupInfo.java => ExecutorGroupInfo.java} | 7 ++- ...Info.java => ExecutorGroupInviteInfo.java} | 15 +++--- ...0GroupJoin.java => ExecutorGroupJoin.java} | 18 +++---- ...roupLeave.java => ExecutorGroupLeave.java} | 6 +-- .../rosetta/executors/ExecutorIceServers.java | 41 +++++++++++++++ ...utor6Message.java => ExecutorMessage.java} | 14 ++--- ...ineState.java => ExecutorOnlineState.java} | 30 ++++++----- ...ion.java => ExecutorPushNotification.java} | 12 ++--- .../{Executor7Read.java => ExecutorRead.java} | 8 +-- ...ort.java => ExecutorRequestTransport.java} | 6 +-- ...Update.java => ExecutorRequestUpdate.java} | 6 +-- ...ecutor3Search.java => ExecutorSearch.java} | 35 +++++++------ ...ignalPeer.java => ExecutorSignalPeer.java} | 35 +++++++------ ...{Executor25Sync.java => ExecutorSync.java} | 16 +++--- ...tor11Typeing.java => ExecutorTypeing.java} | 8 +-- ...cutor27WebRTC.java => ExecutorWebRTC.java} | 18 +++---- .../OnlineStatusDisconnectListener.java | 21 ++++---- ...OnlineStatusHandshakeCompleteListener.java | 23 ++++---- .../service/dispatch/MessageDispatcher.java | 52 +++++++++++++------ .../service/dispatch/runtime/BaseDialog.java | 38 ++++++++++++++ 26 files changed, 278 insertions(+), 206 deletions(-) delete mode 100644 src/main/java/im/rosetta/executors/Executor28IceServers.java rename src/main/java/im/rosetta/executors/{Executor24DeviceResolve.java => ExecutorDeviceResolve.java} (91%) rename src/main/java/im/rosetta/executors/{Executor22GroupBan.java => ExecutorGroupBan.java} (91%) rename src/main/java/im/rosetta/executors/{Executor17GroupCreate.java => ExecutorGroupCreate.java} (82%) rename src/main/java/im/rosetta/executors/{Executor18GroupInfo.java => ExecutorGroupInfo.java} (90%) rename src/main/java/im/rosetta/executors/{Executor19GroupInviteInfo.java => ExecutorGroupInviteInfo.java} (79%) rename src/main/java/im/rosetta/executors/{Executor20GroupJoin.java => ExecutorGroupJoin.java} (83%) rename src/main/java/im/rosetta/executors/{Executor21GroupLeave.java => ExecutorGroupLeave.java} (92%) create mode 100644 src/main/java/im/rosetta/executors/ExecutorIceServers.java rename src/main/java/im/rosetta/executors/{Executor6Message.java => ExecutorMessage.java} (91%) rename src/main/java/im/rosetta/executors/{Executor4OnlineState.java => ExecutorOnlineState.java} (66%) rename src/main/java/im/rosetta/executors/{Executor16PushNotification.java => ExecutorPushNotification.java} (86%) rename src/main/java/im/rosetta/executors/{Executor7Read.java => ExecutorRead.java} (89%) rename src/main/java/im/rosetta/executors/{Executor15RequestTransport.java => ExecutorRequestTransport.java} (85%) rename src/main/java/im/rosetta/executors/{Executor10RequestUpdate.java => ExecutorRequestUpdate.java} (87%) rename src/main/java/im/rosetta/executors/{Executor3Search.java => ExecutorSearch.java} (59%) rename src/main/java/im/rosetta/executors/{Executor26SignalPeer.java => ExecutorSignalPeer.java} (90%) rename src/main/java/im/rosetta/executors/{Executor25Sync.java => ExecutorSync.java} (79%) rename src/main/java/im/rosetta/executors/{Executor11Typeing.java => ExecutorTypeing.java} (90%) rename src/main/java/im/rosetta/executors/{Executor27WebRTC.java => ExecutorWebRTC.java} (87%) create mode 100644 src/main/java/im/rosetta/service/dispatch/runtime/BaseDialog.java diff --git a/src/main/java/im/rosetta/Boot.java b/src/main/java/im/rosetta/Boot.java index ba00ee3..62a5361 100644 --- a/src/main/java/im/rosetta/Boot.java +++ b/src/main/java/im/rosetta/Boot.java @@ -21,8 +21,8 @@ import im.rosetta.executors.Executor25Sync; import im.rosetta.executors.Executor26SignalPeer; import im.rosetta.executors.Executor27WebRTC; import im.rosetta.executors.Executor28IceServers; -import im.rosetta.executors.Executor3Search; -import im.rosetta.executors.Executor4OnlineState; +import im.rosetta.executors.ExecutorSearch; +import im.rosetta.executors.ExecutorOnlineState; import im.rosetta.executors.Executor6Message; import im.rosetta.executors.Executor7Read; import im.rosetta.listeners.DeviceListListener; @@ -158,8 +158,8 @@ public class Boot { private void registerAllExecutors() { this.packetManager.registerExecutor(0, new ExecutorHandshake(this.eventManager, this.clientManager, this.packetManager)); this.packetManager.registerExecutor(1, new ExecutorUserInfo()); - this.packetManager.registerExecutor(3, new Executor3Search(this.clientManager)); - this.packetManager.registerExecutor(4, new Executor4OnlineState(this.onlineManager, this.clientManager)); + this.packetManager.registerExecutor(3, new ExecutorSearch(this.clientManager)); + this.packetManager.registerExecutor(4, new ExecutorOnlineState(this.onlineManager, this.clientManager)); this.packetManager.registerExecutor(6, new Executor6Message(this.clientManager, this.packetManager)); this.packetManager.registerExecutor(7, new Executor7Read(this.clientManager, this.packetManager)); this.packetManager.registerExecutor(10, new Executor10RequestUpdate()); diff --git a/src/main/java/im/rosetta/database/entity/PushToken.java b/src/main/java/im/rosetta/database/entity/PushToken.java index 7a102a2..3ae6594 100644 --- a/src/main/java/im/rosetta/database/entity/PushToken.java +++ b/src/main/java/im/rosetta/database/entity/PushToken.java @@ -1,7 +1,7 @@ package im.rosetta.database.entity; import im.rosetta.database.CreateUpdateEntity; -import im.rosetta.packet.runtime.TokenType; +import im.rosetta.network.enums.TokenType; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; diff --git a/src/main/java/im/rosetta/executors/Executor28IceServers.java b/src/main/java/im/rosetta/executors/Executor28IceServers.java deleted file mode 100644 index d0af5e0..0000000 --- a/src/main/java/im/rosetta/executors/Executor28IceServers.java +++ /dev/null @@ -1,28 +0,0 @@ -package im.rosetta.executors; - -import java.util.ArrayList; - -import im.rosetta.packet.Packet28IceServers; -import im.rosetta.service.services.ForwardUnitService; -import io.orprotocol.ProtocolException; -import io.orprotocol.client.Client; -import io.orprotocol.packet.PacketExecutor; - -public class Executor28IceServers extends PacketExecutor { - - private ForwardUnitService fus; - - public Executor28IceServers(ForwardUnitService fus) { - this.fus = fus; - } - - @Override - public void onPacketReceived(Packet28IceServers packet, Client client) throws Exception, ProtocolException { - /** - * Берем TURN сервера и отправляем их клиенту - */ - packet.setIceServers(new ArrayList<>(this.fus.getTurnServers())); - client.send(packet); - } - -} diff --git a/src/main/java/im/rosetta/executors/Executor24DeviceResolve.java b/src/main/java/im/rosetta/executors/ExecutorDeviceResolve.java similarity index 91% rename from src/main/java/im/rosetta/executors/Executor24DeviceResolve.java rename to src/main/java/im/rosetta/executors/ExecutorDeviceResolve.java index 92ca734..8c5e198 100644 --- a/src/main/java/im/rosetta/executors/Executor24DeviceResolve.java +++ b/src/main/java/im/rosetta/executors/ExecutorDeviceResolve.java @@ -11,10 +11,10 @@ import im.rosetta.database.repository.BufferRepository; import im.rosetta.database.repository.DeviceRepository; import im.rosetta.event.EventManager; import im.rosetta.event.events.handshake.HandshakeCompletedEvent; -import im.rosetta.packet.Packet0Handshake; -import im.rosetta.packet.Packet24DeviceResolve; -import im.rosetta.packet.runtime.DeviceSolution; -import im.rosetta.packet.runtime.HandshakeStage; +import im.rosetta.network.enums.DeviceSolution; +import im.rosetta.network.enums.HandshakeStage; +import im.rosetta.network.packet.PacketDeviceResolve; +import im.rosetta.network.packet.PacketHandshake; import im.rosetta.service.dispatch.DeviceDispatcher; import im.rosetta.service.services.BufferService; import io.orprotocol.ProtocolException; @@ -22,7 +22,7 @@ import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; import io.orprotocol.packet.PacketManager; -public class Executor24DeviceResolve extends PacketExecutor { +public class ExecutorDeviceResolve extends PacketExecutor { private final ClientManager clientManager; private final EventManager eventManager; @@ -31,7 +31,7 @@ public class Executor24DeviceResolve extends PacketExecutor { +public class ExecutorGroupBan extends PacketExecutor { private final GroupRepository groupRepository = new GroupRepository(); @Override - public void onPacketReceived(Packet22GroupBan packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketGroupBan packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** @@ -69,7 +68,7 @@ public class Executor22GroupBan extends PacketExecutor { * Отправляем клиенту новый Packet18GroupInfo, чтобы он обновил информацию о группе, * например, удалил участника из списка участников */ - Packet18GroupInfo groupInfoPacket = new Packet18GroupInfo(); + PacketGroupInfo groupInfoPacket = new PacketGroupInfo(); groupInfoPacket.setGroupId(groupId); groupInfoPacket.setMembersPKs(group.getMembersPublicKeys()); client.send(groupInfoPacket); diff --git a/src/main/java/im/rosetta/executors/Executor17GroupCreate.java b/src/main/java/im/rosetta/executors/ExecutorGroupCreate.java similarity index 82% rename from src/main/java/im/rosetta/executors/Executor17GroupCreate.java rename to src/main/java/im/rosetta/executors/ExecutorGroupCreate.java index 23de798..14fff56 100644 --- a/src/main/java/im/rosetta/executors/Executor17GroupCreate.java +++ b/src/main/java/im/rosetta/executors/ExecutorGroupCreate.java @@ -3,19 +3,19 @@ package im.rosetta.executors; import im.rosetta.Failures; import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.database.repository.GroupRepository; -import im.rosetta.packet.Packet17GroupCreate; +import im.rosetta.network.packet.PacketGroupCreate; import im.rosetta.util.RandomUtil; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor17GroupCreate extends PacketExecutor { +public class ExecutorGroupCreate extends PacketExecutor { private final GroupRepository groupRepository = new GroupRepository(); @Override - public void onPacketReceived(Packet17GroupCreate packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketGroupCreate packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** diff --git a/src/main/java/im/rosetta/executors/Executor18GroupInfo.java b/src/main/java/im/rosetta/executors/ExecutorGroupInfo.java similarity index 90% rename from src/main/java/im/rosetta/executors/Executor18GroupInfo.java rename to src/main/java/im/rosetta/executors/ExecutorGroupInfo.java index 082b508..1b7732d 100644 --- a/src/main/java/im/rosetta/executors/Executor18GroupInfo.java +++ b/src/main/java/im/rosetta/executors/ExecutorGroupInfo.java @@ -6,18 +6,17 @@ import im.rosetta.Failures; import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.database.entity.Group; import im.rosetta.database.repository.GroupRepository; -import im.rosetta.packet.Packet18GroupInfo; - +import im.rosetta.network.packet.PacketGroupInfo; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor18GroupInfo extends PacketExecutor { +public class ExecutorGroupInfo extends PacketExecutor { private final GroupRepository groupRepository = new GroupRepository(); @Override - public void onPacketReceived(Packet18GroupInfo packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketGroupInfo packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** diff --git a/src/main/java/im/rosetta/executors/Executor19GroupInviteInfo.java b/src/main/java/im/rosetta/executors/ExecutorGroupInviteInfo.java similarity index 79% rename from src/main/java/im/rosetta/executors/Executor19GroupInviteInfo.java rename to src/main/java/im/rosetta/executors/ExecutorGroupInviteInfo.java index 0eeaace..8218a69 100644 --- a/src/main/java/im/rosetta/executors/Executor19GroupInviteInfo.java +++ b/src/main/java/im/rosetta/executors/ExecutorGroupInviteInfo.java @@ -4,19 +4,18 @@ import im.rosetta.Failures; import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.database.entity.Group; import im.rosetta.database.repository.GroupRepository; -import im.rosetta.packet.Packet19GroupInviteInfo; -import im.rosetta.packet.runtime.NetworkGroupStatus; - +import im.rosetta.network.enums.GroupStatus; +import im.rosetta.network.packet.PacketGroupInviteInfo; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor19GroupInviteInfo extends PacketExecutor { +public class ExecutorGroupInviteInfo extends PacketExecutor { private final GroupRepository groupRepository = new GroupRepository(); @Override - public void onPacketReceived(Packet19GroupInviteInfo packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketGroupInviteInfo packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** @@ -31,7 +30,7 @@ public class Executor19GroupInviteInfo extends PacketExecutor { +public class ExecutorGroupJoin extends PacketExecutor { private final GroupRepository groupRepository = new GroupRepository(); private final BufferRepository bufferRepository = new BufferRepository(); private final BufferService bufferService; - public Executor20GroupJoin(PacketManager packetManager) { + public ExecutorGroupJoin(PacketManager packetManager) { this.bufferService = new BufferService(bufferRepository, packetManager); } @Override - public void onPacketReceived(Packet20GroupJoin packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketGroupJoin packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** @@ -39,7 +39,7 @@ public class Executor20GroupJoin extends PacketExecutor { /** * Группы не существует, возвращаем клиенту статус INVALID */ - packet.setStatus(NetworkGroupStatus.INVALID); + packet.setStatus(GroupStatus.INVALID); client.send(packet); return; } @@ -48,7 +48,7 @@ public class Executor20GroupJoin extends PacketExecutor { /** * Клиент забанен в группе, возвращаем клиенту статус BANNED */ - packet.setStatus(NetworkGroupStatus.BANNED); + packet.setStatus(GroupStatus.BANNED); client.send(packet); return; } @@ -57,14 +57,14 @@ public class Executor20GroupJoin extends PacketExecutor { /** * Клиент уже является участником группы, возвращаем клиенту статус JOINED */ - packet.setStatus(NetworkGroupStatus.JOINED); + packet.setStatus(GroupStatus.JOINED); client.send(packet); return; } /** * Все проверки пройдены, клиент может вступить в группу */ - packet.setStatus(NetworkGroupStatus.JOINED); + packet.setStatus(GroupStatus.JOINED); /** * Кладем пакет в буфер для будущей синхронизации */ diff --git a/src/main/java/im/rosetta/executors/Executor21GroupLeave.java b/src/main/java/im/rosetta/executors/ExecutorGroupLeave.java similarity index 92% rename from src/main/java/im/rosetta/executors/Executor21GroupLeave.java rename to src/main/java/im/rosetta/executors/ExecutorGroupLeave.java index 451d406..89a66b9 100644 --- a/src/main/java/im/rosetta/executors/Executor21GroupLeave.java +++ b/src/main/java/im/rosetta/executors/ExecutorGroupLeave.java @@ -4,7 +4,7 @@ import im.rosetta.Failures; import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.database.entity.Group; import im.rosetta.database.repository.GroupRepository; -import im.rosetta.packet.Packet21GroupLeave; +import im.rosetta.network.packet.PacketGroupLeave; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; @@ -16,12 +16,12 @@ import io.orprotocol.packet.PacketExecutor; * чтобы клиентское приложение могло корректно обновить интерфейс, например, удалить группу из списка групп пользователя * Если клиент является единственным участником группы, то при выходе группа удаляется целиком */ -public class Executor21GroupLeave extends PacketExecutor { +public class ExecutorGroupLeave extends PacketExecutor { private final GroupRepository groupRepository = new GroupRepository(); @Override - public void onPacketReceived(Packet21GroupLeave packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketGroupLeave packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** diff --git a/src/main/java/im/rosetta/executors/ExecutorIceServers.java b/src/main/java/im/rosetta/executors/ExecutorIceServers.java new file mode 100644 index 0000000..a2aa23f --- /dev/null +++ b/src/main/java/im/rosetta/executors/ExecutorIceServers.java @@ -0,0 +1,41 @@ +package im.rosetta.executors; + +import java.util.ArrayList; +import java.util.List; + +import im.rosetta.network.packet.PacketIceServers; +import im.rosetta.service.services.ForwardUnitService; +import io.orprotocol.ProtocolException; +import io.orprotocol.client.Client; +import io.orprotocol.packet.PacketExecutor; + +public class ExecutorIceServers extends PacketExecutor { + + private ForwardUnitService fus; + + public ExecutorIceServers(ForwardUnitService fus) { + this.fus = fus; + } + + @Override + public void onPacketReceived(PacketIceServers packet, Client client) throws Exception, ProtocolException { + /** + * Берем TURN сервера и отправляем их клиенту + * Такая сложная конвертация нужна потому что у нас есть тип RTCIceServer из g365sfu, который + * не совместим с типом RTCIceServer, который используется в пакете, хотя + * поля у них одинаковые нужна такая трансляция + */ + List convertedIceServers = new ArrayList<>(); + for (io.g365sfu.webrtc.RTCIceServer server : this.fus.getTurnServers()) { + im.rosetta.network.types.RTCIceServer newServer = new im.rosetta.network.types.RTCIceServer(); + newServer.setUrl(server.getUrl()); + newServer.setUsername(server.getUsername()); + newServer.setCredential(server.getCredential()); + newServer.setTransport(server.getTransport()); + convertedIceServers.add(newServer); + } + packet.setIceServers(convertedIceServers); + client.send(packet); + } + +} diff --git a/src/main/java/im/rosetta/executors/Executor6Message.java b/src/main/java/im/rosetta/executors/ExecutorMessage.java similarity index 91% rename from src/main/java/im/rosetta/executors/Executor6Message.java rename to src/main/java/im/rosetta/executors/ExecutorMessage.java index dda3a49..5889ca8 100644 --- a/src/main/java/im/rosetta/executors/Executor6Message.java +++ b/src/main/java/im/rosetta/executors/ExecutorMessage.java @@ -5,9 +5,9 @@ import java.util.List; import im.rosetta.Failures; import im.rosetta.client.ClientManager; import im.rosetta.client.tags.ECIAuthentificate; -import im.rosetta.packet.Packet6Message; -import im.rosetta.packet.Packet8Delivery; -import im.rosetta.packet.runtime.Attachment; +import im.rosetta.network.packet.PacketDelivery; +import im.rosetta.network.packet.PacketMessage; +import im.rosetta.network.types.Attachment; import im.rosetta.service.dispatch.MessageDispatcher; import io.orprotocol.ProtocolException; @@ -18,16 +18,16 @@ import io.orprotocol.packet.PacketManager; /** * Обработчик пакета сообщений */ -public class Executor6Message extends PacketExecutor { +public class ExecutorMessage extends PacketExecutor { private final MessageDispatcher messageDispatcher; - public Executor6Message(ClientManager clientManager, PacketManager packetManager) { + public ExecutorMessage(ClientManager clientManager, PacketManager packetManager) { this.messageDispatcher = new MessageDispatcher(clientManager, packetManager); } @Override - public void onPacketReceived(Packet6Message packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketMessage packet, Client client) throws Exception, ProtocolException { String fromPublicKey = packet.getFromPublicKey(); String toPublicKey = packet.getToPublicKey(); String messageId = packet.getMessageId(); @@ -117,7 +117,7 @@ public class Executor6Message extends PacketExecutor { /** * Сообщение успешно отправлено, отправялем клиенту пакет успешной доставки */ - Packet8Delivery deliveryPacket = new Packet8Delivery(); + PacketDelivery deliveryPacket = new PacketDelivery(); deliveryPacket.setMessageId(messageId); deliveryPacket.setToPublicKey(toPublicKey); client.send(deliveryPacket); diff --git a/src/main/java/im/rosetta/executors/Executor4OnlineState.java b/src/main/java/im/rosetta/executors/ExecutorOnlineState.java similarity index 66% rename from src/main/java/im/rosetta/executors/Executor4OnlineState.java rename to src/main/java/im/rosetta/executors/ExecutorOnlineState.java index 200cf61..65b6498 100644 --- a/src/main/java/im/rosetta/executors/Executor4OnlineState.java +++ b/src/main/java/im/rosetta/executors/ExecutorOnlineState.java @@ -7,27 +7,26 @@ import im.rosetta.Failures; import im.rosetta.client.ClientManager; import im.rosetta.client.OnlineManager; import im.rosetta.client.tags.ECIAuthentificate; -import im.rosetta.packet.Packet4OnlineSubscribe; -import im.rosetta.packet.Packet5OnlineState; -import im.rosetta.packet.runtime.NetworkStatus; -import im.rosetta.packet.runtime.PKNetworkStatus; - +import im.rosetta.network.enums.NetworkStatus; +import im.rosetta.network.packet.PacketOnlineState; +import im.rosetta.network.packet.PacketOnlineSubscribe; +import im.rosetta.network.types.PKNetworkStatus; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor4OnlineState extends PacketExecutor { +public class ExecutorOnlineState extends PacketExecutor { private final OnlineManager onlineManager; private final ClientManager clientManager; - public Executor4OnlineState(OnlineManager onlineManager, ClientManager clientManager) { + public ExecutorOnlineState(OnlineManager onlineManager, ClientManager clientManager) { this.onlineManager = onlineManager; this.clientManager = clientManager; } @Override - public void onPacketReceived(Packet4OnlineSubscribe packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketOnlineSubscribe packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()) { /** @@ -60,14 +59,17 @@ public class Executor4OnlineState extends PacketExecutor * Сразу же формируем и отправляем клиенту онлайн статус для указанных публичных ключей, чтобы клиент не ждал обновления статуса, * а получил его сразу после подписки */ - Packet5OnlineState onlineStates = new Packet5OnlineState(); - List onlineStatuses = new ArrayList<>(); + PacketOnlineState onlineStates = new PacketOnlineState(); + List onlineStatusList = new ArrayList<>(); for (String targetPublicKey : publicKeys) { - boolean isOnline = this.clientManager.isClientConnected(targetPublicKey); - PKNetworkStatus networkStatus = new PKNetworkStatus(targetPublicKey, NetworkStatus.fromBoolean(isOnline)); - onlineStatuses.add(networkStatus); + NetworkStatus networkStatus = this.clientManager.isClientConnected(targetPublicKey) ? + NetworkStatus.ONLINE : NetworkStatus.OFFLINE; + PKNetworkStatus pkNetworkStatus = new PKNetworkStatus(); + pkNetworkStatus.setPublicKey(targetPublicKey); + pkNetworkStatus.setNetworkStatus(networkStatus); + onlineStatusList.add(pkNetworkStatus); } - onlineStates.setPkNetworkStatuses(onlineStatuses); + onlineStates.setPkNetworkStatuses(onlineStatusList); client.send(onlineStates); } diff --git a/src/main/java/im/rosetta/executors/Executor16PushNotification.java b/src/main/java/im/rosetta/executors/ExecutorPushNotification.java similarity index 86% rename from src/main/java/im/rosetta/executors/Executor16PushNotification.java rename to src/main/java/im/rosetta/executors/ExecutorPushNotification.java index c4bccbc..3355c0c 100644 --- a/src/main/java/im/rosetta/executors/Executor16PushNotification.java +++ b/src/main/java/im/rosetta/executors/ExecutorPushNotification.java @@ -8,22 +8,22 @@ import im.rosetta.database.entity.Device; import im.rosetta.database.entity.PushToken; import im.rosetta.database.repository.DeviceRepository; import im.rosetta.database.repository.PushTokenRepository; -import im.rosetta.packet.Packet16PushNotification; -import im.rosetta.packet.runtime.NetworkNotificationAction; +import im.rosetta.network.enums.NotificationAction; +import im.rosetta.network.packet.PacketPushNotification; import im.rosetta.service.services.DeviceService; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor16PushNotification extends PacketExecutor { +public class ExecutorPushNotification extends PacketExecutor { private final DeviceRepository deviceRepository = new DeviceRepository(); private final DeviceService deviceService = new DeviceService(deviceRepository); private final PushTokenRepository pushTokenRepository = new PushTokenRepository(); @Override - public void onPacketReceived(Packet16PushNotification packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketPushNotification packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** @@ -50,7 +50,7 @@ public class Executor16PushNotification extends PacketExecutor { +public class ExecutorRead extends PacketExecutor { private final MessageDispatcher messageDispatcher; - public Executor7Read(ClientManager clientManager, PacketManager packetManager) { + public ExecutorRead(ClientManager clientManager, PacketManager packetManager) { this.messageDispatcher = new MessageDispatcher(clientManager, packetManager); } @Override - public void onPacketReceived(Packet7Read packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketRead packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); String fromPublicKey = packet.getFromPublicKey(); String toPublicKey = packet.getToPublicKey(); diff --git a/src/main/java/im/rosetta/executors/Executor15RequestTransport.java b/src/main/java/im/rosetta/executors/ExecutorRequestTransport.java similarity index 85% rename from src/main/java/im/rosetta/executors/Executor15RequestTransport.java rename to src/main/java/im/rosetta/executors/ExecutorRequestTransport.java index 2ff7c74..0699b77 100644 --- a/src/main/java/im/rosetta/executors/Executor15RequestTransport.java +++ b/src/main/java/im/rosetta/executors/ExecutorRequestTransport.java @@ -5,17 +5,17 @@ import java.util.List; import im.rosetta.Failures; import im.rosetta.client.tags.ECIAuthentificate; -import im.rosetta.packet.Packet15RequestTransport; +import im.rosetta.network.packet.PacketRequestTransport; import im.rosetta.util.RandomUtil; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor15RequestTransport extends PacketExecutor { +public class ExecutorRequestTransport extends PacketExecutor { @Override - public void onPacketReceived(Packet15RequestTransport packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketRequestTransport packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){ /** diff --git a/src/main/java/im/rosetta/executors/Executor10RequestUpdate.java b/src/main/java/im/rosetta/executors/ExecutorRequestUpdate.java similarity index 87% rename from src/main/java/im/rosetta/executors/Executor10RequestUpdate.java rename to src/main/java/im/rosetta/executors/ExecutorRequestUpdate.java index 64d3a41..3ea67cf 100644 --- a/src/main/java/im/rosetta/executors/Executor10RequestUpdate.java +++ b/src/main/java/im/rosetta/executors/ExecutorRequestUpdate.java @@ -3,7 +3,7 @@ package im.rosetta.executors; import java.util.Arrays; import java.util.List; -import im.rosetta.packet.Packet10RequestUpdate; +import im.rosetta.network.packet.PacketRequestUpdate; import im.rosetta.util.RandomUtil; import io.orprotocol.ProtocolException; @@ -15,10 +15,10 @@ import io.orprotocol.packet.PacketExecutor; * но код продублирован специально, чтобы не размазывать * его например в Dispatcher. Так читать удобнее */ -public class Executor10RequestUpdate extends PacketExecutor { +public class ExecutorRequestUpdate extends PacketExecutor { @Override - public void onPacketReceived(Packet10RequestUpdate packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketRequestUpdate packet, Client client) throws Exception, ProtocolException { /** * Обратите внимание этот пакет в отличии от Packet15RequestTransport * не требует авторизации. Это сделано на те случаи когда приложение diff --git a/src/main/java/im/rosetta/executors/Executor3Search.java b/src/main/java/im/rosetta/executors/ExecutorSearch.java similarity index 59% rename from src/main/java/im/rosetta/executors/Executor3Search.java rename to src/main/java/im/rosetta/executors/ExecutorSearch.java index 386e329..55f2375 100644 --- a/src/main/java/im/rosetta/executors/Executor3Search.java +++ b/src/main/java/im/rosetta/executors/ExecutorSearch.java @@ -8,27 +8,27 @@ import im.rosetta.client.ClientManager; import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.database.entity.User; import im.rosetta.database.repository.UserRepository; -import im.rosetta.packet.Packet3Search; -import im.rosetta.packet.runtime.NetworkStatus; -import im.rosetta.packet.runtime.SearchInfo; +import im.rosetta.network.enums.NetworkStatus; +import im.rosetta.network.packet.PacketSearch; +import im.rosetta.network.types.SearchInfo; import im.rosetta.service.services.UserService; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor3Search extends PacketExecutor { +public class ExecutorSearch extends PacketExecutor { private final UserRepository userRepository = new UserRepository(); private final UserService userService = new UserService(userRepository); private final ClientManager clientManager; - public Executor3Search(ClientManager clientManager) { + public ExecutorSearch(ClientManager clientManager) { this.clientManager = clientManager; } @Override - public void onPacketReceived(Packet3Search packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketSearch packet, Client client) throws Exception, ProtocolException { String search = packet.getSearch(); ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); @@ -48,24 +48,25 @@ public class Executor3Search extends PacketExecutor { } List usersFindedList = userService.searchUsers(search, 7); - Packet3Search response = new Packet3Search(); + PacketSearch response = new PacketSearch(); response.setSearch(""); response.setPrivateKey(""); - List searchInfos = new ArrayList<>(); + List searchInfoList = new ArrayList<>(); for(User user : usersFindedList){ - SearchInfo searchInfo = new SearchInfo( - user.getUsername(), - user.getTitle(), - user.getPublicKey(), - user.getVerified(), - NetworkStatus.fromBoolean(this.clientManager.isClientConnected(user.getPublicKey())) - ); - searchInfos.add(searchInfo); + NetworkStatus networkStatus = this.clientManager.isClientConnected(user.getPublicKey()) ? + NetworkStatus.ONLINE : NetworkStatus.OFFLINE; + SearchInfo searchInfo = new SearchInfo(); + searchInfo.setNetworkStatus(networkStatus); + searchInfo.setTitle(user.getTitle()); + searchInfo.setUsername(user.getUsername()); + searchInfo.setVerified(user.getVerified()); + searchInfo.setPublicKey(user.getPublicKey()); + searchInfoList.add(searchInfo); } - response.setSearchInfos(searchInfos); + response.setSearchInfo(searchInfoList); client.send(response); } diff --git a/src/main/java/im/rosetta/executors/Executor26SignalPeer.java b/src/main/java/im/rosetta/executors/ExecutorSignalPeer.java similarity index 90% rename from src/main/java/im/rosetta/executors/Executor26SignalPeer.java rename to src/main/java/im/rosetta/executors/ExecutorSignalPeer.java index 188020f..3a3c6c2 100644 --- a/src/main/java/im/rosetta/executors/Executor26SignalPeer.java +++ b/src/main/java/im/rosetta/executors/ExecutorSignalPeer.java @@ -10,8 +10,8 @@ import im.rosetta.calls.CallManager; import im.rosetta.calls.CallSession; import im.rosetta.client.ClientManager; import im.rosetta.client.tags.ECIAuthentificate; -import im.rosetta.packet.Packet26SignalPeer; -import im.rosetta.packet.runtime.NetworkSignalType; +import im.rosetta.network.enums.SignalType; +import im.rosetta.network.packet.PacketSignalPeer; import im.rosetta.service.dispatch.push.PushNotifyDispatcher; import im.rosetta.service.dispatch.runtime.PushType; import im.rosetta.service.services.ForwardUnitService; @@ -23,7 +23,7 @@ import io.orprotocol.packet.PacketExecutor; /** * Используется в Peer To Peer звонках, в групповых звонках другой сигналинг */ -public class Executor26SignalPeer extends PacketExecutor { +public class ExecutorSignalPeer extends PacketExecutor { private ClientManager clientManager; private ForwardUnitService fus; @@ -33,8 +33,8 @@ public class Executor26SignalPeer extends PacketExecutor { * все сигналы, которые не входят в этот перечень, будут доступны для * исполнения без авторизации. */ - private Set authentificatedTypes = new HashSet<>(){{ - add(NetworkSignalType.CALL); + private Set authentificatedTypes = new HashSet<>(){{ + add(SignalType.CALL); }}; /** @@ -43,18 +43,18 @@ public class Executor26SignalPeer extends PacketExecutor { */ private CallManager callManager; - public Executor26SignalPeer(ClientManager clientManager, ForwardUnitService fus, CallManager callManager) { + public ExecutorSignalPeer(ClientManager clientManager, ForwardUnitService fus, CallManager callManager) { this.clientManager = clientManager; this.fus = fus; this.callManager = callManager; } @Override - public void onPacketReceived(Packet26SignalPeer packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketSignalPeer packet, Client client) throws Exception, ProtocolException { String src = packet.getSrc(); String dst = packet.getDst(); ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); - NetworkSignalType type = packet.getSignalType(); + SignalType type = packet.getSignalType(); if ((eciAuthentificate == null || !eciAuthentificate.hasAuthorized()) && this.authentificatedTypes.contains(type)) { /** @@ -72,7 +72,7 @@ public class Executor26SignalPeer extends PacketExecutor { client.disconnect(Failures.DATA_MISSMATCH); return; } - if(type == NetworkSignalType.CALL) { + if(type == SignalType.CALL) { /** * Инициируется звонок от src к dst, проверяем, что dst не занят другим звонком, если занят, то отправляем сигнал END_CALL_BECAUSE_BUSY обратно src */ @@ -80,8 +80,8 @@ public class Executor26SignalPeer extends PacketExecutor { /** * Получатель сигнала уже находится в другой комнате, значит он занят другим звонком, отправляем сигнал END_CALL_BECAUSE_BUSY обратно src */ - Packet26SignalPeer responsePacket = new Packet26SignalPeer(); - responsePacket.setSignalType(NetworkSignalType.END_CALL_BECAUSE_BUSY); + PacketSignalPeer responsePacket = new PacketSignalPeer(); + responsePacket.setSignalType(SignalType.END_CALL_BECAUSE_BUSY); client.send(responsePacket); return; } @@ -116,7 +116,7 @@ public class Executor26SignalPeer extends PacketExecutor { this.clientManager.sendPacketToAuthorizedPK(dst, packet); return; } - if(type == NetworkSignalType.ACCEPT){ + if(type == SignalType.ACCEPT){ String callId = packet.getCallId(); String joinToken = packet.getJoinToken(); CallSession session = this.callManager.getCallSession(callId, joinToken); @@ -145,12 +145,12 @@ public class Executor26SignalPeer extends PacketExecutor { * Сбрасываем вызов на всех остальных устройствах пользователя, который принимает звонок, * чтобы он не смог принять или отклонить звонок с другого устройства */ - Packet26SignalPeer endCallOtherDevices = new Packet26SignalPeer(); - endCallOtherDevices.setSignalType(NetworkSignalType.END_CALL); + PacketSignalPeer endCallOtherDevices = new PacketSignalPeer(); + endCallOtherDevices.setSignalType(SignalType.END_CALL); this.clientManager.sendPacketToAuthorizedPK(src, endCallOtherDevices, client); return; } - if(type == NetworkSignalType.KEY_EXCHANGE){ + if(type == SignalType.KEY_EXCHANGE){ /** * Ретранслируем ключи в рамках сессии */ @@ -168,7 +168,7 @@ public class Executor26SignalPeer extends PacketExecutor { session.sendPacket(packet, client); return; } - if(type == NetworkSignalType.END_CALL) { + if(type == SignalType.END_CALL) { /** * Ретранслируем сигнал окончания звонка всем участникам сессии, кроме отправителя, и удаляем сессию */ @@ -203,7 +203,8 @@ public class Executor26SignalPeer extends PacketExecutor { this.callManager.removeSession(session); return; } - if(type == NetworkSignalType.ACTIVE) { + + if(type == SignalType.ACTIVE) { /** * Клиент сообщил, что прошел стадию обмена ключами и звонок активен */ diff --git a/src/main/java/im/rosetta/executors/Executor25Sync.java b/src/main/java/im/rosetta/executors/ExecutorSync.java similarity index 79% rename from src/main/java/im/rosetta/executors/Executor25Sync.java rename to src/main/java/im/rosetta/executors/ExecutorSync.java index 87cdba9..53f09c1 100644 --- a/src/main/java/im/rosetta/executors/Executor25Sync.java +++ b/src/main/java/im/rosetta/executors/ExecutorSync.java @@ -3,8 +3,8 @@ package im.rosetta.executors; import java.util.List; import im.rosetta.database.repository.BufferRepository; -import im.rosetta.packet.Packet25Sync; -import im.rosetta.packet.runtime.NetworkSyncStatus; +import im.rosetta.network.enums.SyncStatus; +import im.rosetta.network.packet.PacketSync; import im.rosetta.service.services.BufferService; import im.rosetta.service.services.runtime.PacketBuffer; import io.orprotocol.ProtocolException; @@ -13,17 +13,17 @@ import io.orprotocol.packet.Packet; import io.orprotocol.packet.PacketExecutor; import io.orprotocol.packet.PacketManager; -public class Executor25Sync extends PacketExecutor { +public class ExecutorSync extends PacketExecutor { private final BufferRepository bufferRepository = new BufferRepository(); private final BufferService bufferService; - public Executor25Sync(PacketManager packetManager) { + public ExecutorSync(PacketManager packetManager) { this.bufferService = new BufferService(bufferRepository, packetManager); } @Override - public void onPacketReceived(Packet25Sync packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketSync packet, Client client) throws Exception, ProtocolException { /** * Начиная с какого времени клиент желает получить синхронизацию */ @@ -36,7 +36,7 @@ public class Executor25Sync extends PacketExecutor { /** * Нет пакетов для синхронизации, сообщаем клиенту что он синхронизирован */ - packet.setSyncStatus(NetworkSyncStatus.NOT_NEEDED); + packet.setSyncStatus(SyncStatus.NOT_NEEDED); client.send(packet); return; } @@ -44,7 +44,7 @@ public class Executor25Sync extends PacketExecutor { /** * Отправляем клиенту информацию о том, что синхронизация началась */ - packet.setSyncStatus(NetworkSyncStatus.BATCH_START); + packet.setSyncStatus(SyncStatus.BATCH_START); client.send(packet); /** @@ -58,7 +58,7 @@ public class Executor25Sync extends PacketExecutor { /** * Сообщаем клиенту, что синхронизация завершена */ - packet.setSyncStatus(NetworkSyncStatus.BATCH_END); + packet.setSyncStatus(SyncStatus.BATCH_END); packet.setTimestamp(packetBuffer.getLastPacketTimestamp()); client.send(packet); } diff --git a/src/main/java/im/rosetta/executors/Executor11Typeing.java b/src/main/java/im/rosetta/executors/ExecutorTypeing.java similarity index 90% rename from src/main/java/im/rosetta/executors/Executor11Typeing.java rename to src/main/java/im/rosetta/executors/ExecutorTypeing.java index 7729fdd..4caf9f5 100644 --- a/src/main/java/im/rosetta/executors/Executor11Typeing.java +++ b/src/main/java/im/rosetta/executors/ExecutorTypeing.java @@ -3,7 +3,7 @@ package im.rosetta.executors; import im.rosetta.Failures; import im.rosetta.client.ClientManager; import im.rosetta.client.tags.ECIAuthentificate; -import im.rosetta.packet.Packet11Typeing; +import im.rosetta.network.packet.PacketTypeing; import im.rosetta.service.dispatch.MessageDispatcher; import io.orprotocol.ProtocolException; @@ -11,16 +11,16 @@ import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; import io.orprotocol.packet.PacketManager; -public class Executor11Typeing extends PacketExecutor { +public class ExecutorTypeing extends PacketExecutor { private final MessageDispatcher messageDispatcher; - public Executor11Typeing(ClientManager clientManager, PacketManager packetManager) { + public ExecutorTypeing(ClientManager clientManager, PacketManager packetManager) { this.messageDispatcher = new MessageDispatcher(clientManager, packetManager); } @Override - public void onPacketReceived(Packet11Typeing packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketTypeing packet, Client client) throws Exception, ProtocolException { ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class); String fromPublicKey = packet.getFromPublicKey(); String toPublicKey = packet.getToPublicKey(); diff --git a/src/main/java/im/rosetta/executors/Executor27WebRTC.java b/src/main/java/im/rosetta/executors/ExecutorWebRTC.java similarity index 87% rename from src/main/java/im/rosetta/executors/Executor27WebRTC.java rename to src/main/java/im/rosetta/executors/ExecutorWebRTC.java index 95fcc57..1eee7f2 100644 --- a/src/main/java/im/rosetta/executors/Executor27WebRTC.java +++ b/src/main/java/im/rosetta/executors/ExecutorWebRTC.java @@ -3,23 +3,23 @@ package im.rosetta.executors; import im.rosetta.Failures; import im.rosetta.calls.CallManager; import im.rosetta.calls.CallSession; -import im.rosetta.packet.Packet27WebRTC; -import im.rosetta.packet.runtime.NetworkWebRTCType; +import im.rosetta.network.enums.WebRTCType; +import im.rosetta.network.packet.PacketWebRTC; import io.g365sfu.Room; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; import io.orprotocol.packet.PacketExecutor; -public class Executor27WebRTC extends PacketExecutor { +public class ExecutorWebRTC extends PacketExecutor { private CallManager callManager; - public Executor27WebRTC(CallManager callManager) { + public ExecutorWebRTC(CallManager callManager) { this.callManager = callManager; } @Override - public void onPacketReceived(Packet27WebRTC packet, Client client) throws Exception, ProtocolException { + public void onPacketReceived(PacketWebRTC packet, Client client) throws Exception, ProtocolException { /** * Получаем, в какой сессии находится этот сокет */ @@ -53,22 +53,22 @@ public class Executor27WebRTC extends PacketExecutor { return; } - NetworkWebRTCType type = packet.getType(); - if(type == NetworkWebRTCType.OFFER) { + WebRTCType type = packet.getType(); + if(type == WebRTCType.OFFER) { /** * Если это OFFER, то отправляем OFFER на сервер SFU, * который отвечает за эту комнату, чтобы он транслировал его всем участникам комнаты, кроме отправителя */ room.sdpOffer(publicKey, packet.getSdpOrCandidate()); } - if(type == NetworkWebRTCType.ICE_CANDIDATE) { + if(type == WebRTCType.ICE_CANDIDATE) { /** * Если это ICE кандидат, то отправляем его на сервер SFU, * который отвечает за эту комнату, чтобы он транслировал его всем участникам комнаты, кроме отправителя */ room.iceCandidate(publicKey, packet.getSdpOrCandidate()); } - if(type == NetworkWebRTCType.ANSWER) { + if(type == WebRTCType.ANSWER) { /** * Если это ANSWER, то отправляем его на сервер SFU, * который отвечает за эту комнату, чтобы он транслировал его всем участникам комнаты, кроме отправителя diff --git a/src/main/java/im/rosetta/listeners/OnlineStatusDisconnectListener.java b/src/main/java/im/rosetta/listeners/OnlineStatusDisconnectListener.java index 7ed5e3c..e726329 100644 --- a/src/main/java/im/rosetta/listeners/OnlineStatusDisconnectListener.java +++ b/src/main/java/im/rosetta/listeners/OnlineStatusDisconnectListener.java @@ -9,10 +9,9 @@ import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.event.EventHandler; import im.rosetta.event.Listener; import im.rosetta.event.events.DisconnectEvent; -import im.rosetta.packet.Packet5OnlineState; -import im.rosetta.packet.runtime.NetworkStatus; -import im.rosetta.packet.runtime.PKNetworkStatus; - +import im.rosetta.network.enums.NetworkStatus; +import im.rosetta.network.packet.PacketOnlineState; +import im.rosetta.network.types.PKNetworkStatus; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; @@ -59,13 +58,13 @@ public class OnlineStatusDisconnectListener implements Listener { * Уведомляем всех подписчиков на его онлайн статус, что он отключился (ушел в оффлайн) */ for (Client subscriber : subscribers) { - Packet5OnlineState packet = new Packet5OnlineState(); - List statuses = new ArrayList<>(); - statuses.add(new PKNetworkStatus( - eciAuthentificate.getPublicKey(), - NetworkStatus.OFFLINE - )); - packet.setPkNetworkStatuses(statuses); + PacketOnlineState packet = new PacketOnlineState(); + List statusList = new ArrayList<>(); + PKNetworkStatus status = new PKNetworkStatus(); + status.setPublicKey(eciAuthentificate.getPublicKey()); + status.setNetworkStatus(NetworkStatus.OFFLINE); + statusList.add(status); + packet.setPkNetworkStatuses(statusList); subscriber.send(packet); } /** diff --git a/src/main/java/im/rosetta/listeners/OnlineStatusHandshakeCompleteListener.java b/src/main/java/im/rosetta/listeners/OnlineStatusHandshakeCompleteListener.java index 25cd0bc..e3ec77d 100644 --- a/src/main/java/im/rosetta/listeners/OnlineStatusHandshakeCompleteListener.java +++ b/src/main/java/im/rosetta/listeners/OnlineStatusHandshakeCompleteListener.java @@ -8,10 +8,9 @@ import im.rosetta.client.tags.ECIAuthentificate; import im.rosetta.event.EventHandler; import im.rosetta.event.Listener; import im.rosetta.event.events.handshake.HandshakeCompletedEvent; -import im.rosetta.packet.Packet5OnlineState; -import im.rosetta.packet.runtime.NetworkStatus; -import im.rosetta.packet.runtime.PKNetworkStatus; - +import im.rosetta.network.enums.NetworkStatus; +import im.rosetta.network.packet.PacketOnlineState; +import im.rosetta.network.types.PKNetworkStatus; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; @@ -45,14 +44,14 @@ public class OnlineStatusHandshakeCompleteListener implements Listener { * Уведомляем всех подписчиков на его онлайн статус, что он подключился (стал онлайн) */ for (Client subscriber : subscribers) { - Packet5OnlineState packet = new Packet5OnlineState(); - List statuses = new ArrayList<>(); - statuses.add(new PKNetworkStatus( - eciAuthentificate.getPublicKey(), - NetworkStatus.ONLINE - )); - packet.setPkNetworkStatuses(statuses); - subscriber.send(packet); + PacketOnlineState packet = new PacketOnlineState(); + List statusList = new ArrayList<>(); + PKNetworkStatus status = new PKNetworkStatus(); + status.setPublicKey(eciAuthentificate.getPublicKey()); + status.setNetworkStatus(NetworkStatus.ONLINE); + statusList.add(status); + packet.setPkNetworkStatuses(statusList); + subscriber.send(packet); } } diff --git a/src/main/java/im/rosetta/service/dispatch/MessageDispatcher.java b/src/main/java/im/rosetta/service/dispatch/MessageDispatcher.java index 9440843..10d4e83 100644 --- a/src/main/java/im/rosetta/service/dispatch/MessageDispatcher.java +++ b/src/main/java/im/rosetta/service/dispatch/MessageDispatcher.java @@ -9,15 +9,17 @@ import im.rosetta.database.entity.User; import im.rosetta.database.repository.BufferRepository; import im.rosetta.database.repository.GroupRepository; import im.rosetta.database.repository.UserRepository; -import im.rosetta.packet.Packet11Typeing; -import im.rosetta.packet.Packet7Read; -import im.rosetta.packet.base.PacketBaseDialog; +import im.rosetta.network.packet.PacketMessage; +import im.rosetta.network.packet.PacketRead; +import im.rosetta.network.packet.PacketTypeing; import im.rosetta.service.dispatch.push.PushNotifyDispatcher; +import im.rosetta.service.dispatch.runtime.BaseDialog; import im.rosetta.service.dispatch.runtime.PushType; import im.rosetta.service.services.BufferService; import im.rosetta.service.services.UserService; import io.orprotocol.ProtocolException; import io.orprotocol.client.Client; +import io.orprotocol.packet.Packet; import io.orprotocol.packet.PacketManager; /** @@ -42,13 +44,29 @@ public class MessageDispatcher { this.bufferService = new BufferService(bufferRepository, packetManager); } + private BaseDialog constructBase(Packet packet) { + if( + !(packet instanceof PacketMessage) && + !(packet instanceof PacketTypeing) && + !(packet instanceof PacketRead) + ) { + return null; + } + return (BaseDialog) packet; + } + /** * Отправляет групповое сообщение всем участникам группы, кроме отправителя * @param packet пакет с групповым сообщением */ - public void sendGroup(PacketBaseDialog packet, Client client, ECIAuthentificate eciAuthentificate) throws ProtocolException { - String fromPublicKey = packet.getFromPublicKey(); - String toPublicKey = packet.getToPublicKey(); + public void sendGroup(Packet packet, Client client, ECIAuthentificate eciAuthentificate) + throws ProtocolException, IllegalArgumentException { + BaseDialog base = this.constructBase(packet); + if(base == null){ + throw new IllegalArgumentException("Packet must be a dialog packets"); + } + String fromPublicKey = base.getFromPublicKey(); + String toPublicKey = base.getToPublicKey(); List groupMembersPublicKeys = this.groupRepository.findGroupMembers(toPublicKey.replace("#group:", "")); if(groupMembersPublicKeys.isEmpty()){ /** @@ -68,7 +86,7 @@ public class MessageDispatcher { * Ретранслируем сообщение ВСЕМ авторизованным сессиям отправителя КРОМЕ текущей, * чтобы синхронизировать отправленные сообщения */ - if(!(packet instanceof Packet11Typeing)){ + if(!(packet instanceof PacketTypeing)){ /** * Если это пакет печати его не обязательно кэшировать, так как он нужен только * для отображения статуса печати в реальном времени @@ -93,13 +111,13 @@ public class MessageDispatcher { * Отправляем сообщение всем, кто в беседе */ this.clientManager.sendPacketToAuthorizedPK(groupMembersPublicKeys, packet); - if(packet instanceof Packet11Typeing){ + if(packet instanceof PacketTypeing){ /** * Если это пакет печати, то не отправляем пуш уведомление, так как это может привести к спаму пушами при наборе текста */ return; } - if(packet instanceof Packet7Read){ + if(packet instanceof PacketRead){ /** * Если это пакет прочтения, то отправляем тихий пуш, что диалог прочитан, отправляем тому, кто читает диалог, чтобы * клиент мог очистить пуши для этого диалога @@ -131,9 +149,13 @@ public class MessageDispatcher { * чтобы доставить пользователям если они не онлайн, если указать false то этот пакет получит * только пользователь который были в сети */ - public void sendPeer(PacketBaseDialog packet, Client client, boolean bufferizationNeed) throws ProtocolException { - String fromPublicKey = packet.getFromPublicKey(); - String toPublicKey = packet.getToPublicKey(); + public void sendPeer(Packet packet, Client client, boolean bufferizationNeed) throws ProtocolException { + BaseDialog base = this.constructBase(packet); + if(base == null){ + throw new IllegalArgumentException("Packet must be a dialog packets"); + } + String fromPublicKey = base.getFromPublicKey(); + String toPublicKey = base.getToPublicKey(); User user = this.userService.fromClient(client); if(user == null){ /** @@ -162,14 +184,14 @@ public class MessageDispatcher { * Сохраняем сообщение в буфер на случай если получатель офлайн, или нам нужна будет синхронизация сообщений для получателя */ this.bufferService.pushPacketToBuffer(fromPublicKey, toPublicKey, packet); - if(packet instanceof Packet11Typeing){ + if(packet instanceof PacketTypeing){ /** * Если это пакет печати, то не отправляем пуш уведомление, * так как это может привести к спаму пушами при наборе текста */ return; } - if(packet instanceof Packet7Read){ + if(packet instanceof PacketRead){ /** * Если это пакет прочтения, то отправляем тихий пуш, что диалог прочитан, отправляем тому, кто читает диалог, чтобы * клиент мог очистить пуши для этого диалога @@ -201,7 +223,7 @@ public class MessageDispatcher { * @param client клиент отправляющий пакет * @throws ProtocolException */ - public void sendPeer(PacketBaseDialog packet, Client client) throws ProtocolException { + public void sendPeer(Packet packet, Client client) throws ProtocolException { /** * По умолчанию буферизация включена, чтобы не терять сообщения */ diff --git a/src/main/java/im/rosetta/service/dispatch/runtime/BaseDialog.java b/src/main/java/im/rosetta/service/dispatch/runtime/BaseDialog.java new file mode 100644 index 0000000..3694aa4 --- /dev/null +++ b/src/main/java/im/rosetta/service/dispatch/runtime/BaseDialog.java @@ -0,0 +1,38 @@ +package im.rosetta.service.dispatch.runtime; + +import io.orprotocol.packet.Packet; + +/** + * Базовый класс диалога нужный для диспатчера + */ +public class BaseDialog extends Packet { + + public String fromPublicKey; + public String toPublicKey; + public String privateKey; + + public String getFromPublicKey() { + return fromPublicKey; + } + + public void setFromPublicKey(String fromPublicKey) { + this.fromPublicKey = fromPublicKey; + } + + public String getToPublicKey() { + return toPublicKey; + } + + public void setToPublicKey(String toPublicKey) { + this.toPublicKey = toPublicKey; + } + + public String getPrivateKey() { + return privateKey; + } + + public void setPrivateKey(String privateKey) { + this.privateKey = privateKey; + } + +}