11#include <promeki/config.h>
22PROMEKI_NAMESPACE_BEGIN
50class SrtServer :
public ObjectBase {
51 PROMEKI_OBJECT(SrtServer, ObjectBase)
54 static constexpr int DefaultBacklog = 50;
60 SrtServer(ObjectBase *parent =
nullptr);
63 ~SrtServer()
override;
78 Error listen(
const SocketAddress &address,
int backlog = DefaultBacklog);
84 bool isListening()
const {
return _listening; }
87 SocketAddress serverAddress()
const {
return _address; }
102 SrtSocket::UPtr accept(
unsigned int timeoutMs = 0);
111 int handle()
const {
return _sock; }
122 Error setNonBlocking(
bool enable);
127 Error setLatency(
int ms);
130 Error setPassphrase(
const String &passphrase);
133 Error setEncryptionKeyLength(
int bytes);
136 Error setMaxBandwidth(int64_t bytesPerSec);
139 Error setPayloadSize(
int bytes);
151 Error setReuseAddress(
bool enable);
167 using ListenCallback = Function<bool(
const String &streamId,
const SocketAddress &peer)>;
183 Error setListenCallback(ListenCallback cb);
186 String lastError()
const {
return _lastError; }
189 PROMEKI_SIGNAL(newConnection);
200 static bool dispatchListenCallback(SrtServer *server,
const String &streamId,
201 const SocketAddress &peer);
204 int _sock = SrtSocket::InvalidHandle;
205 bool _listening =
false;
206 SocketAddress _address;
209 int _latencyMs = 120;
210 int _payloadSize = 0;
213 bool _reuseAddr =
true;
214 ListenCallback _listenCb;
223 Error openAndConfigure();
228 void captureLastError();