]> git.sesse.net Git - casparcg/blob - SFML-1.6/include/SFML/Network/Unix/SocketHelper.hpp
(no commit message)
[casparcg] / SFML-1.6 / include / SFML / Network / Unix / SocketHelper.hpp
1 ////////////////////////////////////////////////////////////\r
2 //\r
3 // SFML - Simple and Fast Multimedia Library\r
4 // Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)\r
5 //\r
6 // This software is provided 'as-is', without any express or implied warranty.\r
7 // In no event will the authors be held liable for any damages arising from the use of this software.\r
8 //\r
9 // Permission is granted to anyone to use this software for any purpose,\r
10 // including commercial applications, and to alter it and redistribute it freely,\r
11 // subject to the following restrictions:\r
12 //\r
13 // 1. The origin of this software must not be misrepresented;\r
14 //    you must not claim that you wrote the original software.\r
15 //    If you use this software in a product, an acknowledgment\r
16 //    in the product documentation would be appreciated but is not required.\r
17 //\r
18 // 2. Altered source versions must be plainly marked as such,\r
19 //    and must not be misrepresented as being the original software.\r
20 //\r
21 // 3. This notice may not be removed or altered from any source distribution.\r
22 //\r
23 ////////////////////////////////////////////////////////////\r
24 \r
25 #ifndef SFML_SOCKETHELPERUNIX_HPP\r
26 #define SFML_SOCKETHELPERUNIX_HPP\r
27 \r
28 ////////////////////////////////////////////////////////////\r
29 // Headers\r
30 ////////////////////////////////////////////////////////////\r
31 #include <sys/types.h>\r
32 #include <sys/socket.h>\r
33 #include <netinet/in.h>\r
34 #include <netinet/tcp.h>\r
35 #include <arpa/inet.h>\r
36 #include <netdb.h>\r
37 #include <unistd.h>\r
38 \r
39 \r
40 namespace sf\r
41 {\r
42 ////////////////////////////////////////////////////////////\r
43 /// This class defines helper functions to do all the\r
44 /// non-portable socket stuff. This class is meant for internal\r
45 /// use only\r
46 ////////////////////////////////////////////////////////////\r
47 class SFML_API SocketHelper\r
48 {\r
49 public :\r
50 \r
51     ////////////////////////////////////////////////////////////\r
52     // Define some socket types\r
53     ////////////////////////////////////////////////////////////\r
54     typedef int       SocketType;\r
55     typedef socklen_t LengthType;\r
56 \r
57     ////////////////////////////////////////////////////////////\r
58     /// Return the value of the invalid socket\r
59     ///\r
60     /// \return Unique value of the invalid socket\r
61     ///\r
62     ////////////////////////////////////////////////////////////\r
63     static SocketType InvalidSocket();\r
64 \r
65     ////////////////////////////////////////////////////////////\r
66     /// Close / destroy a socket\r
67     ///\r
68     /// \param Socket : Socket to close\r
69     ///\r
70     /// \return True on success\r
71     ///\r
72     ////////////////////////////////////////////////////////////\r
73     static bool Close(SocketType Socket);\r
74 \r
75     ////////////////////////////////////////////////////////////\r
76     /// Set a socket as blocking or non-blocking\r
77     ///\r
78     /// \param Socket : Socket to modify\r
79     /// \param Block :  New blocking state of the socket\r
80     ///\r
81     ////////////////////////////////////////////////////////////\r
82     static void SetBlocking(SocketType Socket, bool Block);\r
83 \r
84     ////////////////////////////////////////////////////////////\r
85     /// Get the last socket error status\r
86     ///\r
87     /// \return Status corresponding to the last socket error\r
88     ///\r
89     ////////////////////////////////////////////////////////////\r
90     static Socket::Status GetErrorStatus();\r
91 };\r
92 \r
93 } // namespace sf\r
94 \r
95 \r
96 #endif // SFML_SOCKETHELPERUNIX_HPP\r