summaryrefslogtreecommitdiff
path: root/src/SFML/Network/Socket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/SFML/Network/Socket.cpp')
-rw-r--r--src/SFML/Network/Socket.cpp288
1 files changed, 144 insertions, 144 deletions
diff --git a/src/SFML/Network/Socket.cpp b/src/SFML/Network/Socket.cpp
index 3e8489f..a74aa10 100644
--- a/src/SFML/Network/Socket.cpp
+++ b/src/SFML/Network/Socket.cpp
@@ -1,144 +1,144 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
-//
-// 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.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network/Socket.hpp>
-#include <SFML/Network/SocketImpl.hpp>
-#include <SFML/System/Err.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-Socket::Socket(Type type) :
-m_type (type),
-m_socket (priv::SocketImpl::invalidSocket()),
-m_isBlocking(true)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-Socket::~Socket()
-{
- // Close the socket before it gets destructed
- close();
-}
-
-
-////////////////////////////////////////////////////////////
-void Socket::setBlocking(bool blocking)
-{
- // Apply if the socket is already created
- if (m_socket != priv::SocketImpl::invalidSocket())
- priv::SocketImpl::setBlocking(m_socket, blocking);
-
- m_isBlocking = blocking;
-}
-
-
-////////////////////////////////////////////////////////////
-bool Socket::isBlocking() const
-{
- return m_isBlocking;
-}
-
-
-////////////////////////////////////////////////////////////
-SocketHandle Socket::getHandle() const
-{
- return m_socket;
-}
-
-
-////////////////////////////////////////////////////////////
-void Socket::create()
-{
- // Don't create the socket if it already exists
- if (m_socket == priv::SocketImpl::invalidSocket())
- {
- SocketHandle handle = socket(PF_INET, m_type == Tcp ? SOCK_STREAM : SOCK_DGRAM, 0);
- create(handle);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-void Socket::create(SocketHandle handle)
-{
- // Don't create the socket if it already exists
- if (m_socket == priv::SocketImpl::invalidSocket())
- {
- // Assign the new handle
- m_socket = handle;
-
- // Set the current blocking state
- setBlocking(m_isBlocking);
-
- if (m_type == Tcp)
- {
- // Disable the Nagle algorithm (ie. removes buffering of TCP packets)
- int yes = 1;
- if (setsockopt(m_socket, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
- {
- err() << "Failed to set socket option \"TCP_NODELAY\" ; "
- << "all your TCP packets will be buffered" << std::endl;
- }
-
- // On Mac OS X, disable the SIGPIPE signal on disconnection
- #ifdef SFML_SYSTEM_MACOS
- if (setsockopt(m_socket, SOL_SOCKET, SO_NOSIGPIPE, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
- {
- err() << "Failed to set socket option \"SO_NOSIGPIPE\"" << std::endl;
- }
- #endif
- }
- else
- {
- // Enable broadcast by default for UDP sockets
- int yes = 1;
- if (setsockopt(m_socket, SOL_SOCKET, SO_BROADCAST, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
- {
- err() << "Failed to enable broadcast on UDP socket" << std::endl;
- }
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-void Socket::close()
-{
- // Close the socket
- if (m_socket != priv::SocketImpl::invalidSocket())
- {
- priv::SocketImpl::close(m_socket);
- m_socket = priv::SocketImpl::invalidSocket();
- }
-}
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2014 Laurent Gomila (laurent.gom@gmail.com)
+//
+// 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.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Socket.hpp>
+#include <SFML/Network/SocketImpl.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Socket::Socket(Type type) :
+m_type (type),
+m_socket (priv::SocketImpl::invalidSocket()),
+m_isBlocking(true)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::~Socket()
+{
+ // Close the socket before it gets destructed
+ close();
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::setBlocking(bool blocking)
+{
+ // Apply if the socket is already created
+ if (m_socket != priv::SocketImpl::invalidSocket())
+ priv::SocketImpl::setBlocking(m_socket, blocking);
+
+ m_isBlocking = blocking;
+}
+
+
+////////////////////////////////////////////////////////////
+bool Socket::isBlocking() const
+{
+ return m_isBlocking;
+}
+
+
+////////////////////////////////////////////////////////////
+SocketHandle Socket::getHandle() const
+{
+ return m_socket;
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::create()
+{
+ // Don't create the socket if it already exists
+ if (m_socket == priv::SocketImpl::invalidSocket())
+ {
+ SocketHandle handle = socket(PF_INET, m_type == Tcp ? SOCK_STREAM : SOCK_DGRAM, 0);
+ create(handle);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::create(SocketHandle handle)
+{
+ // Don't create the socket if it already exists
+ if (m_socket == priv::SocketImpl::invalidSocket())
+ {
+ // Assign the new handle
+ m_socket = handle;
+
+ // Set the current blocking state
+ setBlocking(m_isBlocking);
+
+ if (m_type == Tcp)
+ {
+ // Disable the Nagle algorithm (i.e. removes buffering of TCP packets)
+ int yes = 1;
+ if (setsockopt(m_socket, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
+ {
+ err() << "Failed to set socket option \"TCP_NODELAY\" ; "
+ << "all your TCP packets will be buffered" << std::endl;
+ }
+
+ // On Mac OS X, disable the SIGPIPE signal on disconnection
+ #ifdef SFML_SYSTEM_MACOS
+ if (setsockopt(m_socket, SOL_SOCKET, SO_NOSIGPIPE, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
+ {
+ err() << "Failed to set socket option \"SO_NOSIGPIPE\"" << std::endl;
+ }
+ #endif
+ }
+ else
+ {
+ // Enable broadcast by default for UDP sockets
+ int yes = 1;
+ if (setsockopt(m_socket, SOL_SOCKET, SO_BROADCAST, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
+ {
+ err() << "Failed to enable broadcast on UDP socket" << std::endl;
+ }
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::close()
+{
+ // Close the socket
+ if (m_socket != priv::SocketImpl::invalidSocket())
+ {
+ priv::SocketImpl::close(m_socket);
+ m_socket = priv::SocketImpl::invalidSocket();
+ }
+}
+
+} // namespace sf