LocalPlayer::accelerateHorizontal: cleanups
[oweals/minetest.git] / src / socket.h
index ba88b0142882b643f5f6cac1ddf64828747d2724..b1f1e0875c4d7a842eed2ec8173981d6522d4b89 100644 (file)
@@ -21,9 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define SOCKET_HEADER
 
 #ifdef _WIN32
-       #ifndef WIN32_LEAN_AND_MEAN
-               #define WIN32_LEAN_AND_MEAN
-       #endif
 #ifndef _WIN32_WINNT
        #define _WIN32_WINNT 0x0501
 #endif
@@ -45,7 +42,7 @@ extern bool socket_enable_debug_output;
 class SocketException : public BaseException
 {
 public:
-       SocketException(const char *s):
+       SocketException(const std::string &s):
                BaseException(s)
        {
        }
@@ -54,7 +51,7 @@ public:
 class ResolveError : public BaseException
 {
 public:
-       ResolveError(const char *s):
+       ResolveError(const std::string &s):
                BaseException(s)
        {
        }
@@ -63,7 +60,7 @@ public:
 class SendFailedException : public BaseException
 {
 public:
-       SendFailedException(const char *s):
+       SendFailedException(const std::string &s):
                BaseException(s)
        {
        }
@@ -85,37 +82,43 @@ public:
        Address();
        Address(u32 address, u16 port);
        Address(u8 a, u8 b, u8 c, u8 d, u16 port);
-       Address(const IPv6AddressBytes * ipv6_bytes, u16 port);
-       bool operator==(Address &address);
-       bool operator!=(Address &address);
+       Address(const IPv6AddressBytes *ipv6_bytes, u16 port);
+       bool operator==(const Address &address);
+       bool operator!=(const Address &address);
+       // Resolve() may throw ResolveError (address is unchanged in this case)
        void Resolve(const char *name);
        struct sockaddr_in getAddress() const;
        unsigned short getPort() const;
        void setAddress(u32 address);
        void setAddress(u8 a, u8 b, u8 c, u8 d);
-       void setAddress(const IPv6AddressBytes * ipv6_bytes);
+       void setAddress(const IPv6AddressBytes *ipv6_bytes);
        struct sockaddr_in6 getAddress6() const;
        int getFamily() const;
        bool isIPv6() const;
+       bool isZero() const;
        void setPort(unsigned short port);
        void print(std::ostream *s) const;
        std::string serializeString() const;
 private:
-       unsigned int m_addr_family;
+       unsigned int m_addr_family = 0;
        union
        {
                struct sockaddr_in  ipv4;
                struct sockaddr_in6 ipv6;
        } m_address;
-       u16 m_port; // Port is separate from sockaddr structures
+       u16 m_port = 0; // Port is separate from sockaddr structures
 };
 
 class UDPSocket
 {
 public:
+       UDPSocket() { }
        UDPSocket(bool ipv6);
        ~UDPSocket();
-       void Bind(unsigned short port);
+       void Bind(Address addr);
+
+       bool init(bool ipv6, bool noExceptions = false);
+
        //void Close();
        //bool IsOpen();
        void Send(const Address & destination, const void * data, int size);