Browse Source

Exposed pingInterval and maxOutstandingPings in C API

Paul-Louis Ageneau 3 years ago
parent
commit
02d696cb90
2 changed files with 13 additions and 0 deletions
  1. 2 0
      include/rtc/rtc.h
  2. 11 0
      src/capi.cpp

+ 2 - 0
include/rtc/rtc.h

@@ -370,6 +370,8 @@ typedef struct {
 	const char *proxyServer;     // unsupported for now
 	const char *proxyServer;     // unsupported for now
 	const char **protocols;
 	const char **protocols;
 	int protocolsCount;
 	int protocolsCount;
+	int pingInterval;        // in milliseconds, 0 means default, < 0 means disabled
+	int maxOutstandingPings; // 0 means default, < 0 means disabled
 } rtcWsConfiguration;
 } rtcWsConfiguration;
 
 
 RTC_EXPORT int rtcCreateWebSocket(const char *url); // returns ws id
 RTC_EXPORT int rtcCreateWebSocket(const char *url); // returns ws id

+ 11 - 0
src/capi.cpp

@@ -1298,6 +1298,17 @@ int rtcCreateWebSocketEx(const char *url, const rtcWsConfiguration *config) {
 		for (int i = 0; i < config->protocolsCount; ++i)
 		for (int i = 0; i < config->protocolsCount; ++i)
 			c.protocols.emplace_back(string(config->protocols[i]));
 			c.protocols.emplace_back(string(config->protocols[i]));
 
 
+		if (config->pingInterval > 0)
+			c.pingInterval = std::chrono::milliseconds(config->pingInterval);
+		else if (config->pingInterval < 0)
+			c.pingInterval = std::chrono::milliseconds::zero(); // setting to 0 disables,
+			                                                    // not setting keeps default
+
+		if (config->maxOutstandingPings > 0)
+			c.maxOutstandingPings = config->maxOutstandingPings;
+		else if (config->maxOutstandingPings < 0)
+			c.maxOutstandingPings = 0; // setting to 0 disables, not setting keeps default
+
 		auto webSocket = std::make_shared<WebSocket>(std::move(c));
 		auto webSocket = std::make_shared<WebSocket>(std::move(c));
 		webSocket->open(url);
 		webSocket->open(url);
 		return emplaceWebSocket(webSocket);
 		return emplaceWebSocket(webSocket);