mirror of
https://github.com/SFML/SFML.git
synced 2024-12-01 15:51:04 +08:00
Unify SocketImpl headers
The two headers only differed in their inclusions and two type aliases. It's easier to use the preprocessor than the maintain two nearly identical files.
This commit is contained in:
parent
8c9c5c5b99
commit
4ec85b932e
@ -31,12 +31,10 @@ set(SRC
|
|||||||
if(SFML_OS_WINDOWS)
|
if(SFML_OS_WINDOWS)
|
||||||
list(APPEND SRC
|
list(APPEND SRC
|
||||||
${SRCROOT}/Win32/SocketImpl.cpp
|
${SRCROOT}/Win32/SocketImpl.cpp
|
||||||
${SRCROOT}/Win32/SocketImpl.hpp
|
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
list(APPEND SRC
|
list(APPEND SRC
|
||||||
${SRCROOT}/Unix/SocketImpl.cpp
|
${SRCROOT}/Unix/SocketImpl.cpp
|
||||||
${SRCROOT}/Unix/SocketImpl.hpp
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -27,15 +27,94 @@
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// Headers
|
// Headers
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
#include <SFML/Config.hpp>
|
#include <SFML/Network/Socket.hpp>
|
||||||
|
|
||||||
|
|
||||||
#if defined(SFML_SYSTEM_WINDOWS)
|
#if defined(SFML_SYSTEM_WINDOWS)
|
||||||
|
|
||||||
#include <SFML/Network/Win32/SocketImpl.hpp>
|
#include <SFML/System/Win32/WindowsHeader.hpp>
|
||||||
|
|
||||||
|
#include <winsock2.h>
|
||||||
|
#include <ws2tcpip.h>
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <SFML/Network/Unix/SocketImpl.hpp>
|
#include <arpa/inet.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
|
||||||
|
namespace sf::priv
|
||||||
|
{
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Helper class implementing all the non-portable
|
||||||
|
/// socket stuff
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
class SocketImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
// Types
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
#if defined(SFML_SYSTEM_WINDOWS)
|
||||||
|
using AddrLength = int;
|
||||||
|
using Size = int;
|
||||||
|
#else
|
||||||
|
using AddrLength = socklen_t;
|
||||||
|
using Size = std::size_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Create an internal sockaddr_in address
|
||||||
|
///
|
||||||
|
/// \param address Target address
|
||||||
|
/// \param port Target port
|
||||||
|
///
|
||||||
|
/// \return sockaddr_in ready to be used by socket functions
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static sockaddr_in createAddress(std::uint32_t address, unsigned short port);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Return the value of the invalid socket
|
||||||
|
///
|
||||||
|
/// \return Special value of the invalid socket
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static SocketHandle invalidSocket();
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Close and destroy a socket
|
||||||
|
///
|
||||||
|
/// \param sock Handle of the socket to close
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void close(SocketHandle sock);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Set a socket as blocking or non-blocking
|
||||||
|
///
|
||||||
|
/// \param sock Handle of the socket
|
||||||
|
/// \param block New blocking state of the socket
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static void setBlocking(SocketHandle sock, bool block);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// Get the last socket error status
|
||||||
|
///
|
||||||
|
/// \return Status corresponding to the last socket error
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
static Socket::Status getErrorStatus();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace sf::priv
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// Headers
|
// Headers
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
#include <SFML/Network/Unix/SocketImpl.hpp>
|
#include <SFML/Network/SocketImpl.hpp>
|
||||||
|
|
||||||
#include <SFML/System/Err.hpp>
|
#include <SFML/System/Err.hpp>
|
||||||
|
|
||||||
|
@ -1,104 +0,0 @@
|
|||||||
////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// SFML - Simple and Fast Multimedia Library
|
|
||||||
// Copyright (C) 2007-2023 Laurent Gomila (laurent@sfml-dev.org)
|
|
||||||
//
|
|
||||||
// This software is provided 'as-is', without any express or implied warranty.
|
|
||||||
// In no event will the authors be held liable for any damages arising from the use of this software.
|
|
||||||
//
|
|
||||||
// Permission is granted to anyone to use this software for any purpose,
|
|
||||||
// including commercial applications, and to alter it and redistribute it freely,
|
|
||||||
// subject to the following restrictions:
|
|
||||||
//
|
|
||||||
// 1. The origin of this software must not be misrepresented;
|
|
||||||
// you must not claim that you wrote the original software.
|
|
||||||
// If you use this software in a product, an acknowledgment
|
|
||||||
// in the product documentation would be appreciated but is not required.
|
|
||||||
//
|
|
||||||
// 2. Altered source versions must be plainly marked as such,
|
|
||||||
// and must not be misrepresented as being the original software.
|
|
||||||
//
|
|
||||||
// 3. This notice may not be removed or altered from any source distribution.
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
// Headers
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
#include <SFML/Network/Socket.hpp>
|
|
||||||
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <netinet/tcp.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
|
|
||||||
namespace sf::priv
|
|
||||||
{
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Helper class implementing all the non-portable
|
|
||||||
/// socket stuff; this is the Unix version
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
class SocketImpl
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
// Types
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
using AddrLength = socklen_t;
|
|
||||||
using Size = std::size_t;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Create an internal sockaddr_in address
|
|
||||||
///
|
|
||||||
/// \param address Target address
|
|
||||||
/// \param port Target port
|
|
||||||
///
|
|
||||||
/// \return sockaddr_in ready to be used by socket functions
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static sockaddr_in createAddress(std::uint32_t address, unsigned short port);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Return the value of the invalid socket
|
|
||||||
///
|
|
||||||
/// \return Special value of the invalid socket
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static SocketHandle invalidSocket();
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Close and destroy a socket
|
|
||||||
///
|
|
||||||
/// \param sock Handle of the socket to close
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static void close(SocketHandle sock);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Set a socket as blocking or non-blocking
|
|
||||||
///
|
|
||||||
/// \param sock Handle of the socket
|
|
||||||
/// \param block New blocking state of the socket
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static void setBlocking(SocketHandle sock, bool block);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// Get the last socket error status
|
|
||||||
///
|
|
||||||
/// \return Status corresponding to the last socket error
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static Socket::Status getErrorStatus();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace sf::priv
|
|
@ -25,7 +25,7 @@
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// Headers
|
// Headers
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
#include <SFML/Network/Win32/SocketImpl.hpp>
|
#include <SFML/Network/SocketImpl.hpp>
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
@ -1,101 +0,0 @@
|
|||||||
////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// SFML - Simple and Fast Multimedia Library
|
|
||||||
// Copyright (C) 2007-2023 Laurent Gomila (laurent@sfml-dev.org)
|
|
||||||
//
|
|
||||||
// This software is provided 'as-is', without any express or implied warranty.
|
|
||||||
// In no event will the authors be held liable for any damages arising from the use of this software.
|
|
||||||
//
|
|
||||||
// Permission is granted to anyone to use this software for any purpose,
|
|
||||||
// including commercial applications, and to alter it and redistribute it freely,
|
|
||||||
// subject to the following restrictions:
|
|
||||||
//
|
|
||||||
// 1. The origin of this software must not be misrepresented;
|
|
||||||
// you must not claim that you wrote the original software.
|
|
||||||
// If you use this software in a product, an acknowledgment
|
|
||||||
// in the product documentation would be appreciated but is not required.
|
|
||||||
//
|
|
||||||
// 2. Altered source versions must be plainly marked as such,
|
|
||||||
// and must not be misrepresented as being the original software.
|
|
||||||
//
|
|
||||||
// 3. This notice may not be removed or altered from any source distribution.
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
// Headers
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
#include <SFML/Network/Socket.hpp>
|
|
||||||
|
|
||||||
#include <SFML/System/Win32/WindowsHeader.hpp>
|
|
||||||
|
|
||||||
#include <winsock2.h>
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
|
|
||||||
namespace sf::priv
|
|
||||||
{
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Helper class implementing all the non-portable
|
|
||||||
/// socket stuff; this is the Windows version
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
class SocketImpl
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
// Types
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
using AddrLength = int;
|
|
||||||
using Size = int;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Create an internal sockaddr_in address
|
|
||||||
///
|
|
||||||
/// \param address Target address
|
|
||||||
/// \param port Target port
|
|
||||||
///
|
|
||||||
/// \return sockaddr_in ready to be used by socket functions
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static sockaddr_in createAddress(std::uint32_t address, unsigned short port);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Return the value of the invalid socket
|
|
||||||
///
|
|
||||||
/// \return Special value of the invalid socket
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static SocketHandle invalidSocket();
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Close and destroy a socket
|
|
||||||
///
|
|
||||||
/// \param sock Handle of the socket to close
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static void close(SocketHandle sock);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Set a socket as blocking or non-blocking
|
|
||||||
///
|
|
||||||
/// \param sock Handle of the socket
|
|
||||||
/// \param block New blocking state of the socket
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static void setBlocking(SocketHandle sock, bool block);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// Get the last socket error status
|
|
||||||
///
|
|
||||||
/// \return Status corresponding to the last socket error
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
static Socket::Status getErrorStatus();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace sf::priv
|
|
Loading…
Reference in New Issue
Block a user