NetSocket set_broadcast_enabled returns Error enum

This commit is contained in:
Fabio Alessandrelli 2019-11-25 17:14:07 +01:00
parent c868baf658
commit ab1bfb9007
3 changed files with 7 additions and 5 deletions

View file

@ -69,7 +69,7 @@ public:
virtual bool is_open() const = 0; virtual bool is_open() const = 0;
virtual int get_available_bytes() const = 0; virtual int get_available_bytes() const = 0;
virtual void set_broadcasting_enabled(bool p_enabled) = 0; virtual Error set_broadcasting_enabled(bool p_enabled) = 0; // Returns OK if the socket option has been set successfully.
virtual void set_blocking_enabled(bool p_enabled) = 0; virtual void set_blocking_enabled(bool p_enabled) = 0;
virtual void set_ipv6_only_enabled(bool p_enabled) = 0; virtual void set_ipv6_only_enabled(bool p_enabled) = 0;
virtual void set_tcp_no_delay_enabled(bool p_enabled) = 0; virtual void set_tcp_no_delay_enabled(bool p_enabled) = 0;

View file

@ -603,15 +603,17 @@ Error NetSocketPosix::sendto(const uint8_t *p_buffer, int p_len, int &r_sent, IP
return OK; return OK;
} }
void NetSocketPosix::set_broadcasting_enabled(bool p_enabled) { Error NetSocketPosix::set_broadcasting_enabled(bool p_enabled) {
ERR_FAIL_COND(!is_open()); ERR_FAIL_COND_V(!is_open(), ERR_UNCONFIGURED);
// IPv6 has no broadcast support. // IPv6 has no broadcast support.
ERR_FAIL_COND(_ip_type == IP::TYPE_IPV6); ERR_FAIL_COND_V(_ip_type == IP::TYPE_IPV6, ERR_UNAVAILABLE);
int par = p_enabled ? 1 : 0; int par = p_enabled ? 1 : 0;
if (setsockopt(_sock, SOL_SOCKET, SO_BROADCAST, SOCK_CBUF(&par), sizeof(int)) != 0) { if (setsockopt(_sock, SOL_SOCKET, SO_BROADCAST, SOCK_CBUF(&par), sizeof(int)) != 0) {
WARN_PRINT("Unable to change broadcast setting"); WARN_PRINT("Unable to change broadcast setting");
return FAILED;
} }
return OK;
} }
void NetSocketPosix::set_blocking_enabled(bool p_enabled) { void NetSocketPosix::set_blocking_enabled(bool p_enabled) {

View file

@ -89,7 +89,7 @@ public:
virtual bool is_open() const; virtual bool is_open() const;
virtual int get_available_bytes() const; virtual int get_available_bytes() const;
virtual void set_broadcasting_enabled(bool p_enabled); virtual Error set_broadcasting_enabled(bool p_enabled);
virtual void set_blocking_enabled(bool p_enabled); virtual void set_blocking_enabled(bool p_enabled);
virtual void set_ipv6_only_enabled(bool p_enabled); virtual void set_ipv6_only_enabled(bool p_enabled);
virtual void set_tcp_no_delay_enabled(bool p_enabled); virtual void set_tcp_no_delay_enabled(bool p_enabled);