Browse Source

Added proxyServer to C API

Paul-Louis Ageneau 3 years ago
parent
commit
b4c0b78d5f
2 changed files with 35 additions and 31 deletions
  1. 1 0
      include/rtc/rtc.h
  2. 34 31
      src/capi.cpp

+ 1 - 0
include/rtc/rtc.h

@@ -152,6 +152,7 @@ RTC_EXPORT void *rtcGetUserPointer(int i);
 typedef struct {
 	const char **iceServers;
 	int iceServersCount;
+	const char *proxyServer; // libnice only
 	const char *bindAddress; // libjuice only, NULL means any
 	rtcCertificateType certificateType;
 	rtcTransportPolicy iceTransportPolicy;

+ 34 - 31
src/capi.cpp

@@ -354,6 +354,9 @@ int rtcCreatePeerConnection(const rtcConfiguration *config) {
 		for (int i = 0; i < config->iceServersCount; ++i)
 			c.iceServers.emplace_back(string(config->iceServers[i]));
 
+		if (config->proxyServer)
+			c.proxyServer.emplace(config->proxyServer);
+
 		if (config->bindAddress)
 			c.bindAddress = string(config->bindAddress);
 
@@ -769,37 +772,37 @@ int rtcReceiveMessage(int id, char *buffer, int *size) {
 			return RTC_ERR_NOT_AVAIL;
 
 		return std::visit( //
-		overloaded{
-			[&](binary b) {
-				int ret = copyAndReturn(std::move(b), buffer, *size);
-				if (ret >= 0) {
-					*size = ret;
-					if (buffer) {
-						channel->receive(); // discard
-					}
-					
-					return RTC_ERR_SUCCESS;
-				} else {
-					*size = int(b.size());
-					return ret;
-				}
-			},
-			[&](string s) {
-				int ret = copyAndReturn(std::move(s), buffer, *size);
-				if (ret >= 0) {
-					*size = -ret;
-					if (buffer) {
-						channel->receive(); // discard
-					}
-					
-					return RTC_ERR_SUCCESS;
-				} else {
-					*size = -int(s.size() + 1);
-					return ret;
-				}
-			},
-		},
-		*message);
+		    overloaded{
+		        [&](binary b) {
+			        int ret = copyAndReturn(std::move(b), buffer, *size);
+			        if (ret >= 0) {
+				        *size = ret;
+				        if (buffer) {
+					        channel->receive(); // discard
+				        }
+
+				        return RTC_ERR_SUCCESS;
+			        } else {
+				        *size = int(b.size());
+				        return ret;
+			        }
+		        },
+		        [&](string s) {
+			        int ret = copyAndReturn(std::move(s), buffer, *size);
+			        if (ret >= 0) {
+				        *size = -ret;
+				        if (buffer) {
+					        channel->receive(); // discard
+				        }
+
+				        return RTC_ERR_SUCCESS;
+			        } else {
+				        *size = -int(s.size() + 1);
+				        return ret;
+			        }
+		        },
+		    },
+		    *message);
 	});
 }