aboutsummaryrefslogtreecommitdiff
path: root/src/socket.h
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2017-08-24 08:28:54 +0200
committerGitHub <noreply@github.com>2017-08-24 08:28:54 +0200
commitc7160cb629086df2a32c7dcf4faed4761ec4393e (patch)
tree63670a536ce95f6a3a1ce09bf2f2f65d1bec5214 /src/socket.h
parent928609c8bd9d4e6129ab244214bd5c54d000b737 (diff)
downloaddragonfireclient-c7160cb629086df2a32c7dcf4faed4761ec4393e.tar.xz
Network cleanup (#6302)
* Cleanup network headers * Move peerhandler to a specific header to reduce compilation times * Move socket.cpp/h to network folder * More work * Network code cleanups * Move socket.{cpp,h} to network folder * Move Address object to network/address.{cpp,h} * Move network exceptions to network/networkexceptions.h * Client: use unique_ptr for Connection * Server/ClientIface: use shared_ptr for Connection * Format fixes * Remove socket.cpp socket.h from clang-format whitelist * Also fix NetworkPacket code style & make it under clang-format
Diffstat (limited to 'src/socket.h')
-rw-r--r--src/socket.h135
1 files changed, 0 insertions, 135 deletions
diff --git a/src/socket.h b/src/socket.h
deleted file mode 100644
index 2264679ed..000000000
--- a/src/socket.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-Minetest
-Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 2.1 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-
-#pragma once
-
-#ifdef _WIN32
-#ifndef _WIN32_WINNT
- #define _WIN32_WINNT 0x0501
-#endif
- #include <windows.h>
- #include <winsock2.h>
- #include <ws2tcpip.h>
-#else
- #include <sys/socket.h>
- #include <netinet/in.h>
-#endif
-
-#include <ostream>
-#include <cstring>
-#include "irrlichttypes.h"
-#include "exceptions.h"
-
-extern bool socket_enable_debug_output;
-
-class SocketException : public BaseException
-{
-public:
- SocketException(const std::string &s):
- BaseException(s)
- {
- }
-};
-
-class ResolveError : public BaseException
-{
-public:
- ResolveError(const std::string &s):
- BaseException(s)
- {
- }
-};
-
-class SendFailedException : public BaseException
-{
-public:
- SendFailedException(const std::string &s):
- BaseException(s)
- {
- }
-};
-
-void sockets_init();
-void sockets_cleanup();
-
-class IPv6AddressBytes
-{
-public:
- u8 bytes[16];
- IPv6AddressBytes() { memset(bytes, 0, 16); }
-};
-
-class Address
-{
-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==(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);
- 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 = 0;
- union
- {
- struct sockaddr_in ipv4;
- struct sockaddr_in6 ipv6;
- } m_address;
- u16 m_port = 0; // Port is separate from sockaddr structures
-};
-
-class UDPSocket
-{
-public:
- UDPSocket() = default;
-
- UDPSocket(bool ipv6);
- ~UDPSocket();
- 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);
- // Returns -1 if there is no data
- int Receive(Address & sender, void * data, int size);
- int GetHandle(); // For debugging purposes only
- void setTimeoutMs(int timeout_ms);
- // Returns true if there is data, false if timeout occurred
- bool WaitData(int timeout_ms);
-private:
- int m_handle;
- int m_timeout_ms;
- int m_addr_family;
-};