SocketHelper.cpp
00001 00002 // 00003 // SFML - Simple and Fast Multimedia Library 00004 // Copyright (C) 2007-2009 Laurent Gomila ([email protected]) 00005 // 00006 // This software is provided 'as-is', without any express or implied warranty. 00007 // In no event will the authors be held liable for any damages arising from the use of this software. 00008 // 00009 // Permission is granted to anyone to use this software for any purpose, 00010 // including commercial applications, and to alter it and redistribute it freely, 00011 // subject to the following restrictions: 00012 // 00013 // 1. The origin of this software must not be misrepresented; 00014 // you must not claim that you wrote the original software. 00015 // If you use this software in a product, an acknowledgment 00016 // in the product documentation would be appreciated but is not required. 00017 // 00018 // 2. Altered source versions must be plainly marked as such, 00019 // and must not be misrepresented as being the original software. 00020 // 00021 // 3. This notice may not be removed or altered from any source distribution. 00022 // 00024 00026 // Headers 00028 #include <SFML/Network/SocketHelper.hpp> 00029 00030 00031 namespace sf 00032 { 00036 SocketHelper::SocketType SocketHelper::InvalidSocket() 00037 { 00038 return INVALID_SOCKET; 00039 } 00040 00041 00045 bool SocketHelper::Close(SocketHelper::SocketType Socket) 00046 { 00047 return closesocket(Socket) != -1; 00048 } 00049 00050 00054 void SocketHelper::SetBlocking(SocketHelper::SocketType Socket, bool Block) 00055 { 00056 unsigned long Blocking = Block ? 0 : 1; 00057 ioctlsocket(Socket, FIONBIO, &Blocking); 00058 } 00059 00060 00064 Socket::Status SocketHelper::GetErrorStatus() 00065 { 00066 switch (WSAGetLastError()) 00067 { 00068 case WSAEWOULDBLOCK : return Socket::NotReady; 00069 case WSAECONNABORTED : return Socket::Disconnected; 00070 case WSAECONNRESET : return Socket::Disconnected; 00071 case WSAETIMEDOUT : return Socket::Disconnected; 00072 case WSAENETRESET : return Socket::Disconnected; 00073 case WSAENOTCONN : return Socket::Disconnected; 00074 default : return Socket::Error; 00075 } 00076 } 00077 00078 00080 // Windows needs some initialization and cleanup to get 00081 // sockets working properly... so let's create a class that will 00082 // do it automatically 00084 struct SocketInitializer 00085 { 00086 SocketInitializer() 00087 { 00088 WSADATA InitData; 00089 WSAStartup(MAKEWORD(2,2), &InitData); 00090 } 00091 00092 ~SocketInitializer() 00093 { 00094 WSACleanup(); 00095 } 00096 }; 00097 00098 SocketInitializer GlobalInitializer; 00099 00100 } // namespace sf
:: Copyright © 2007-2008 Laurent Gomila, all rights reserved :: Documentation generated by doxygen 1.5.2 ::