2
0
Эх сурвалжийг харах

Merge pull request #28453 from Tarik02/enet_socket_set_option

Partially implement enet_socket_set_option
Fabio Alessandrelli 6 жил өмнө
parent
commit
0239d8bd9f

+ 40 - 1
thirdparty/enet/godot.cpp

@@ -95,7 +95,6 @@ ENetSocket enet_socket_create(ENetSocketType type) {
 	NetSocket *socket = NetSocket::create();
 	IP::Type ip_type = IP::TYPE_ANY;
 	socket->open(NetSocket::TYPE_UDP, ip_type);
-	socket->set_blocking_enabled(false);
 
 	return socket;
 }
@@ -216,6 +215,46 @@ int enet_socket_listen(ENetSocket socket, int backlog) {
 
 int enet_socket_set_option(ENetSocket socket, ENetSocketOption option, int value) {
 
+	NetSocket *sock = (NetSocket *)socket;
+
+	switch (option) {
+		case ENET_SOCKOPT_NONBLOCK: {
+			sock->set_blocking_enabled(value ? false : true);
+			return 0;
+		} break;
+
+		case ENET_SOCKOPT_BROADCAST: {
+			sock->set_broadcasting_enabled(value ? true : false);
+			return 0;
+		} break;
+
+		case ENET_SOCKOPT_REUSEADDR: {
+			sock->set_reuse_address_enabled(value ? true : false);
+			return 0;
+		} break;
+
+		case ENET_SOCKOPT_RCVBUF: {
+			return -1;
+		} break;
+
+		case ENET_SOCKOPT_SNDBUF: {
+			return -1;
+		} break;
+
+		case ENET_SOCKOPT_RCVTIMEO: {
+			return -1;
+		} break;
+
+		case ENET_SOCKOPT_SNDTIMEO: {
+			return -1;
+		} break;
+
+		case ENET_SOCKOPT_NODELAY: {
+			sock->set_tcp_no_delay_enabled(value ? true : false);
+			return 0;
+		} break;
+	}
+
 	return -1;
 }