Реализация запросов ICE серверов (TURN)

This commit is contained in:
RoyceDa
2026-03-14 22:57:59 +02:00
parent 8aab1b19b0
commit 312cc5df0f
3 changed files with 101 additions and 2 deletions

View File

@@ -0,0 +1,56 @@
package im.rosetta.packet;
import java.util.ArrayList;
import java.util.List;
import io.g365sfu.webrtc.RTCIceServer;
import io.orprotocol.Stream;
import io.orprotocol.packet.Packet;
public class Packet28IceServers extends Packet {
private List<RTCIceServer> iceServers;
@Override
public void read(Stream stream) {
int count = stream.readInt16();
this.iceServers = new ArrayList<>();
for (int i = 0; i < count; i++) {
String url = stream.readString();
String username = stream.readString();
String credential = stream.readString();
RTCIceServer iceServer = new RTCIceServer(url, username, credential);
iceServers.add(iceServer);
}
}
@Override
public Stream write() {
Stream stream = new Stream();
stream.writeInt16(this.packetId);
stream.writeInt16(iceServers.size());
for (RTCIceServer iceServer : iceServers) {
stream.writeString(iceServer.getUrl());
stream.writeString(iceServer.getUsername());
stream.writeString(iceServer.getCredential());
}
return stream;
}
/**
* Получить список серверов ICE, которые могут быть использованы для обмена кандидатами между участниками звонка через сервер SFU.
* @return список серверов ICE, которые могут быть использованы для обмена кандидатами между участниками звонка через сервер SFU.
*/
public List<RTCIceServer> getIceServers() {
return iceServers;
}
/**
* Установить список серверов ICE, которые могут быть использованы для обмена кандидатами между участниками звонка через сервер SFU.
* @param iceServers список серверов ICE, которые могут быть использованы для обмена кандидатами между участниками звонка через сервер SFU.
*/
public void setIceServers(List<RTCIceServer> iceServers) {
this.iceServers = iceServers;
}
}