Улучшенная организация кода
This commit is contained in:
@@ -1,39 +0,0 @@
|
|||||||
package im.rosetta.executors;
|
|
||||||
|
|
||||||
import im.rosetta.client.ClientManager;
|
|
||||||
import im.rosetta.client.tags.ECIAuthentificate;
|
|
||||||
import im.rosetta.packet.Packet26Signal;
|
|
||||||
import io.orprotocol.ProtocolException;
|
|
||||||
import io.orprotocol.client.Client;
|
|
||||||
import io.orprotocol.packet.PacketExecutor;
|
|
||||||
|
|
||||||
public class Executor26Signal extends PacketExecutor<Packet26Signal> {
|
|
||||||
|
|
||||||
public ClientManager clientManager;
|
|
||||||
|
|
||||||
public Executor26Signal(ClientManager clientManager) {
|
|
||||||
this.clientManager = clientManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPacketReceived(Packet26Signal packet, Client client) throws Exception, ProtocolException {
|
|
||||||
ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class);
|
|
||||||
if (eciAuthentificate == null || !eciAuthentificate.hasAuthorized()) {
|
|
||||||
/**
|
|
||||||
* Если клиент не авторизован, то мы не будем обрабатывать его сигналы на анициализацию звонка
|
|
||||||
* и просто отключим его от сервера.
|
|
||||||
*/
|
|
||||||
client.disconnect();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* TODO: Проверка на существование получателя
|
|
||||||
*/
|
|
||||||
this.clientManager.sendPacketToAuthorizedPK(packet.getDst(), packet);
|
|
||||||
/**
|
|
||||||
* TODO: Высокоприоритетный пуш для сигналов звонков, чтобы мобильные устройства могли показать
|
|
||||||
* интерфейс входящего звонка, даже если приложение находится в фоне
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
64
src/main/java/im/rosetta/executors/Executor26SignalPeer.java
Normal file
64
src/main/java/im/rosetta/executors/Executor26SignalPeer.java
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
package im.rosetta.executors;
|
||||||
|
|
||||||
|
import im.rosetta.Failures;
|
||||||
|
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.service.services.ForwardUnitService;
|
||||||
|
import io.g365sfu.Room;
|
||||||
|
import io.orprotocol.ProtocolException;
|
||||||
|
import io.orprotocol.client.Client;
|
||||||
|
import io.orprotocol.packet.PacketExecutor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Используется в Peer To Peer звонках, в групповых звонках другой сигналинг
|
||||||
|
*/
|
||||||
|
public class Executor26SignalPeer extends PacketExecutor<Packet26SignalPeer> {
|
||||||
|
|
||||||
|
private ClientManager clientManager;
|
||||||
|
private ForwardUnitService fus;
|
||||||
|
|
||||||
|
public Executor26SignalPeer(ClientManager clientManager, ForwardUnitService fus) {
|
||||||
|
this.clientManager = clientManager;
|
||||||
|
this.fus = fus;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPacketReceived(Packet26SignalPeer packet, Client client) throws Exception, ProtocolException {
|
||||||
|
ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class);
|
||||||
|
if (eciAuthentificate == null || !eciAuthentificate.hasAuthorized()) {
|
||||||
|
/**
|
||||||
|
* Если клиент не авторизован, то мы не будем обрабатывать его сигналы на анициализацию звонка
|
||||||
|
* и просто отключим его от сервера.
|
||||||
|
*/
|
||||||
|
client.disconnect(Failures.HANDSHAKE_NOT_COMPLETED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NetworkSignalType type = packet.getSignalType();
|
||||||
|
if(type == NetworkSignalType.CREATE_ROOM){
|
||||||
|
/**
|
||||||
|
* Создается комната для звонка
|
||||||
|
*/
|
||||||
|
Room room = this.fus.createRoom();
|
||||||
|
room.addParticipant(packet.getSrc());
|
||||||
|
room.addParticipant(packet.getDst());
|
||||||
|
packet.setRoomId(room.getRoomId());
|
||||||
|
/**
|
||||||
|
* Результат создания комнаты транслируем обоим участникам, чтобы они могли начать обмен WebRTC SDP, и тд
|
||||||
|
*/
|
||||||
|
this.clientManager.sendPacketToAuthorizedPK(packet.getSrc(), packet);
|
||||||
|
this.clientManager.sendPacketToAuthorizedPK(packet.getDst(), packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* TODO: Проверка на существование получателя
|
||||||
|
*/
|
||||||
|
this.clientManager.sendPacketToAuthorizedPK(packet.getDst(), packet);
|
||||||
|
/**
|
||||||
|
* TODO: Высокоприоритетный пуш для сигналов звонков, чтобы мобильные устройства могли показать
|
||||||
|
* интерфейс входящего звонка, даже если приложение находится в фоне
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user