Bladeren bron

Implement function enet_socket_set_option using ENetSocket class's methods.
Implemented options:
- ENET_SOCKOPT_NONBLOCK
- ENET_SOCKOPT_BROADCAST
- ENET_SOCKOPT_REUSEADDR
- ENET_SOCKOPT_NODELAY
Not implemented options:
- ENET_SOCKOPT_RCVBUF
- ENET_SOCKOPT_SNDBUF
- ENET_SOCKOPT_RCVTIMEO
- ENET_SOCKOPT_SNDTIMEO

Tarik02 6 jaren geleden
bovenliggende
commit
bb3089895c
1 gewijzigde bestanden met toevoegingen van 40 en 0 verwijderingen
  1. 40 0
      thirdparty/enet/godot.cpp

+ 40 - 0
thirdparty/enet/godot.cpp

@@ -216,6 +216,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;
 }