Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CAcceptorSocket.hpp
Go to the documentation of this file.
1#ifndef LIBS_COMM_CACCEPTORSOCKET_HPP_
2#define LIBS_COMM_CACCEPTORSOCKET_HPP_
3
5
6class CAcceptorSocket : public CSocket
7{
8public:
9 CAcceptorSocket() = default;
10
11 explicit CAcceptorSocket(socket_t handle) : CSocket(handle)
12 {
13 }
14
15 explicit CAcceptorSocket(const CSocketAddress &address, int32_t queueSize = DFLT_QUEUE_SIZE)
16 {
17 open(address, queueSize);
18 }
19
20 CAcceptorSocket(CAcceptorSocket &&acc) noexcept : CSocket(std::move(acc))
21 {
22 }
23
26
27 static CAcceptorSocket create(int32_t domain);
28
30 {
31 CSocket::operator=(std::move(rhs));
32
33 return *this;
34 }
35
36 bool listen(int32_t queueSize = DFLT_QUEUE_SIZE)
37 {
38 return checkRetBool(::listen(getHandle(), queueSize));
39 }
40
41 bool open(const CSocketAddress &address, int32_t queueSize = DFLT_QUEUE_SIZE);
42 CStreamSocket accept(CSocketAddress *clientAddress = nullptr);
43 CStreamSocket acceptWithTimeout(CSocketAddress *clientAddress, uint64_t timeout);
44
45protected:
46 static const int32_t DFLT_QUEUE_SIZE = 4;
47
48 static socket_t createHandle(int32_t domain)
49 {
50 return CStreamSocket::createHandle(domain);
51 }
52};
53
54template<typename STREAM_SOCK, typename ADDR = typename STREAM_SOCK::addr_t>
56{
57public:
58 using stream_sock_t = STREAM_SOCK;
59 using addr_t = ADDR;
60
62
63 explicit CAcceptorSocketTmpl(const addr_t &address, int32_t queueSize = DFLT_QUEUE_SIZE)
64 {
65 open(address, queueSize);
66 }
67
68 explicit CAcceptorSocketTmpl(in_port_t port, int32_t queueSize = DFLT_QUEUE_SIZE)
69 {
70 open(port, queueSize);
71 }
72
74 {
75 }
76
79
81 {
82 return CAcceptorSocket::create(addr_t::ADDRESS_FAMILY);
83 }
84
86 {
87 CAcceptorSocket::operator=(std::move(rhs));
88
89 return *this;
90 }
91
92 stream_sock_t accept(addr_t *clientAddress = nullptr)
93 {
94 return stream_sock_t(CAcceptorSocket::accept(clientAddress));
95 }
96
97 stream_sock_t acceptWithTimeout(addr_t *clientAddress, uint64_t timeout)
98 {
99 return stream_sock_t(CAcceptorSocket::acceptWithTimeout(clientAddress, timeout));
100 }
101
102 bool bind(const addr_t &address)
103 {
104 return CAcceptorSocket::bind(address);
105 }
106
107 bool open(const addr_t &address, int32_t queueSize = DFLT_QUEUE_SIZE)
108 {
109 return CAcceptorSocket::open(address, queueSize);
110 }
111
112 bool open(in_port_t port, int32_t queueSize = DFLT_QUEUE_SIZE)
113 {
114 return open(addr_t(port), queueSize);
115 }
116
118 {
120 }
121};
122
123#endif /* LIBS_COMM_CACCEPTORSOCKET_HPP_ */
int32_t socket_t
Definition ENetPort.hpp:13
Definition CAcceptorSocket.hpp:56
bool open(in_port_t port, int32_t queueSize=DFLT_QUEUE_SIZE)
Definition CAcceptorSocket.hpp:112
CAcceptorSocketTmpl()=default
STREAM_SOCK stream_sock_t
Definition CAcceptorSocket.hpp:58
CAcceptorSocketTmpl(const CAcceptorSocketTmpl &)=delete
ADDR addr_t
Definition CAcceptorSocket.hpp:59
CAcceptorSocketTmpl & operator=(const CAcceptorSocketTmpl &)=delete
CAcceptorSocketTmpl(CAcceptorSocketTmpl &&acc) noexcept
Definition CAcceptorSocket.hpp:73
CAcceptorSocketTmpl(in_port_t port, int32_t queueSize=DFLT_QUEUE_SIZE)
Definition CAcceptorSocket.hpp:68
static CAcceptorSocketTmpl create()
Definition CAcceptorSocket.hpp:80
addr_t getAddr() const
Definition CAcceptorSocket.hpp:117
stream_sock_t accept(addr_t *clientAddress=nullptr)
Definition CAcceptorSocket.hpp:92
stream_sock_t acceptWithTimeout(addr_t *clientAddress, uint64_t timeout)
Definition CAcceptorSocket.hpp:97
CAcceptorSocketTmpl & operator=(CAcceptorSocketTmpl &&rhs) noexcept
Definition CAcceptorSocket.hpp:85
bool open(const addr_t &address, int32_t queueSize=DFLT_QUEUE_SIZE)
Definition CAcceptorSocket.hpp:107
CAcceptorSocketTmpl(const addr_t &address, int32_t queueSize=DFLT_QUEUE_SIZE)
Definition CAcceptorSocket.hpp:63
bool bind(const addr_t &address)
Definition CAcceptorSocket.hpp:102
Definition CAcceptorSocket.hpp:7
CAcceptorSocket()=default
CAcceptorSocket & operator=(CAcceptorSocket &&rhs) noexcept
Definition CAcceptorSocket.hpp:29
bool listen(int32_t queueSize=DFLT_QUEUE_SIZE)
Definition CAcceptorSocket.hpp:36
static const int32_t DFLT_QUEUE_SIZE
Definition CAcceptorSocket.hpp:46
static socket_t createHandle(int32_t domain)
Definition CAcceptorSocket.hpp:48
CAcceptorSocket & operator=(const CAcceptorSocket &)=delete
static CAcceptorSocket create(int32_t domain)
Definition CAcceptorSocket.cpp:3
CAcceptorSocket(CAcceptorSocket &&acc) noexcept
Definition CAcceptorSocket.hpp:20
bool open(const CSocketAddress &address, int32_t queueSize=DFLT_QUEUE_SIZE)
Definition CAcceptorSocket.cpp:13
CStreamSocket acceptWithTimeout(CSocketAddress *clientAddress, uint64_t timeout)
Definition CAcceptorSocket.cpp:48
CAcceptorSocket(const CAcceptorSocket &)=delete
CAcceptorSocket(const CSocketAddress &address, int32_t queueSize=DFLT_QUEUE_SIZE)
Definition CAcceptorSocket.hpp:15
CStreamSocket accept(CSocketAddress *clientAddress=nullptr)
Definition CAcceptorSocket.cpp:39
CAcceptorSocket(socket_t handle)
Definition CAcceptorSocket.hpp:11
Definition CSocketAddress.hpp:91
Clase que representa un socket de comunicación. Se usa como base para la genereación de clases de com...
Definition CSocket.hpp:19
CSocket()
Constructor por defecto. Inicializa el socket con el valor INVALID_SOCKET y el error a 0.
Definition CSocket.cpp:6
socket_t getHandle() const
Definition CSocket.cpp:170
bool checkRetBool(T ret) const
Definition CSocket.hpp:169
virtual bool bind(const CSocketAddress &address)
Asigna una dirección a un socket.
Definition CSocket.cpp:42
CSocket & operator=(const CSocket &other)=delete
Operador de asignación de copia, eliminado para evitar su uso.
virtual CSocketAddressAny getAddress() const
Definition CSocket.cpp:139
Definition CStreamSocket.hpp:9
static socket_t createHandle(int32_t domain)
Definition CStreamSocket.hpp:64