NetCpp  v0.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Macros Pages
posix_socket.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 Evidence Srl - www.evidence.eu.com
3  *
4  * Boost Software License - Version 1.0 - August 17th, 2003
5  *
6  * Permission is hereby granted, free of charge, to any person or organization
7  * obtaining a copy of the software and accompanying documentation covered by
8  * this license (the "Software") to use, reproduce, display, distribute,
9  * execute, and transmit the Software, and to prepare derivative works of the
10  * Software, and to permit third-parties to whom the Software is furnished to
11  * do so, all subject to the following:
12  *
13  * The copyright notices in the Software and this entire statement, including
14  * the above license grant, this restriction and the following disclaimer,
15  * must be included in all copies of the Software, in whole or in part, and
16  * all derivative works of the Software, unless such copies or derivative
17  * works are solely in the form of machine-executable object code generated by
18  * a source language processor.
19  *
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22  * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
23  * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
24  * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
25  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26  * DEALINGS IN THE SOFTWARE.
27  */
28 
29 #ifndef POSIX_SOCKET_HPP_
30 #define POSIX_SOCKET_HPP_
31 
32 #include <unistd.h>
33 
35 #include "address.hpp"
36 #include "protocol.hpp"
37 
38 namespace net {
39 
40 /**
41  * @brief Class for platform-dependent code.
42  *
43  * This is the class containing the code for Posix platforms.
44  */
46 
47 public:
48  PosixSocket(const protocol& prot);
49  virtual ~PosixSocket();
50 
51  virtual void connect (const Address& addr);
52  virtual void bind (const Address& addr);
53  virtual int read (void* buffer, size_t size);
54  virtual int write (const void* buffer, size_t size);
55  virtual bool close();
56  virtual void accept (AbstractSystemSocket* sock);
57  virtual void listen (int maxPendingConnections);
58 
59 private:
60  /**
61  * @brief Number of the file descriptor.
62  *
63  * This is the return value of open(), socket() or accept().
64  */
65  int fd_;
66 };
67 
68 } // net
69 
70 #endif // POSIX_SOCKET_HPP_
71