|
E-MailRelay
|
A derivation of GNet::Socket for a stream socket. More...
#include <gsocket.h>
Inheritance diagram for GNet::StreamSocket:
Collaboration diagram for GNet::StreamSocket:Classes | |
| struct | Config |
| A configuration structure for GNet::StreamSocket. More... | |
| struct | Listener |
| Overload discriminator class for GNet::StreamSocket. More... | |
Public Types | |
| using | size_type = Socket::size_type |
| using | ssize_type = Socket::ssize_type |
Public Types inherited from GNet::SocketBase | |
| using | size_type = G::ReadWrite::size_type |
| using | ssize_type = G::ReadWrite::ssize_type |
Public Types inherited from G::ReadWrite | |
| using | size_type = std::size_t |
| using | ssize_type = ssize_t |
Public Member Functions | |
| StreamSocket (Address::Family, const Config &config) | |
| Constructor. More... | |
| StreamSocket (Address::Family, const Listener &, const Config &config) | |
| Constructor overload specifically for a listening socket, which might need slightly different socket options. More... | |
| StreamSocket (const Listener &, Descriptor fd, const Config &config) | |
| Constructor overload for adopting an externally-managed listening file descriptor. More... | |
| ssize_type | read (char *buffer, size_type buffer_length) override |
| Override from ReadWrite::read(). More... | |
| ssize_type | write (const char *buf, size_type len) override |
| Override from Socket::write(). More... | |
| AcceptInfo | accept () |
| Accepts an incoming connection, returning a new()ed socket and the peer address. More... | |
| StreamSocket (const StreamSocket &)=delete | |
| StreamSocket (StreamSocket &&)=delete | |
| StreamSocket & | operator= (const StreamSocket &)=delete |
| StreamSocket & | operator= (StreamSocket &&)=delete |
Public Member Functions inherited from GNet::Socket | |
| Address | getLocalAddress () const |
| Retrieves the local address of the socket. More... | |
| std::pair< bool, Address > | getPeerAddress () const |
| Retrieves address of socket's peer. More... | |
| void | bind (const Address &) |
| Binds the socket with the given address. More... | |
| bool | bind (const Address &, std::nothrow_t) |
| No-throw overload. Returns false on error. More... | |
| unsigned long | getBoundScopeId () const |
| Returns the scope-id of the address last successfully bind()ed. More... | |
| bool | connect (const Address &addr, bool *done=nullptr) |
| Initiates a connection to (or association with) the given address. More... | |
| void | listen () |
| Starts the socket listening on the bound address for incoming connections or incoming datagrams. More... | |
| void | shutdown (int how=1) |
| Modifies the local socket state so that new sends (1 or 2) and/or receives (0 or 2) will fail. More... | |
| Socket (const Socket &)=delete | |
| Socket (Socket &&)=delete | |
| Socket & | operator= (const Socket &)=delete |
| Socket & | operator= (Socket &&)=delete |
Public Member Functions inherited from GNet::SocketBase | |
| ~SocketBase () override | |
| Destructor. More... | |
| SOCKET | fd () const noexcept override |
| Returns the socket file descriptor. More... | |
| Descriptor | fdd () const noexcept |
| Returns the socket descriptor. More... | |
| bool | eWouldBlock () const override |
| Returns true if the previous socket operation failed because the socket would have blocked. More... | |
| bool | eInProgress () const |
| Returns true if the previous socket operation failed with the EINPROGRESS error status. More... | |
| bool | eInUse () const |
| Returns true if the previous socket bind operation failed because the socket was already in use. More... | |
| bool | eMsgSize () const |
| Returns true if the previous socket operation failed with the EMSGSIZE error status. More... | |
| bool | eTooMany () const |
| Returns true if the previous socket operation failed with the EMFILE error status, or similar. More... | |
| bool | eNotConn () const |
| Returns true if the previous socket operation failed with the ENOTCONN error status, or similar. More... | |
| void | addReadHandler (EventHandler &, EventState) |
| Adds this socket to the event source list so that the given handler receives read events. More... | |
| void | dropReadHandler () noexcept |
| Reverses addReadHandler(). More... | |
| void | addWriteHandler (EventHandler &, EventState) |
| Adds this socket to the event source list so that the given handler receives write events when flow control is released. More... | |
| void | dropWriteHandler () noexcept |
| Reverses addWriteHandler(). More... | |
| void | addOtherHandler (EventHandler &, EventState) |
| Adds this socket to the event source list so that the given handler receives exception events. More... | |
| void | dropOtherHandler () noexcept |
| Reverses addOtherHandler(). More... | |
| std::string | asString () const |
| Returns the socket handle as a string. More... | |
| std::string | reason () const |
| Returns the reason for the previous error. More... | |
| SocketBase (const SocketBase &)=delete | |
| SocketBase (SocketBase &&)=delete | |
| SocketBase & | operator= (const SocketBase &)=delete |
| SocketBase & | operator= (SocketBase &&)=delete |
Public Member Functions inherited from G::ReadWrite | |
| virtual ssize_type | read (char *buffer, size_type buffer_length)=0 |
| Reads data. More... | |
| virtual ssize_type | write (const char *buf, size_type len)=0 |
| Sends data. More... | |
| virtual bool | eWouldBlock () const =0 |
| See read() and write(). More... | |
| virtual SOCKET | fd () const noexcept=0 |
| Returns the file descriptor. More... | |
| virtual | ~ReadWrite ()=default |
| Destructor. | |
Static Public Member Functions | |
| static bool | supports (Address::Family) |
| Returns true if stream sockets can be created with the given the address family. More... | |
Static Public Member Functions inherited from GNet::Socket | |
| static std::string | canBindHint (const Address &address, bool stream_socket, const Config &) |
| Returns the empty string if a socket could probably be bound with the given address or a failure reason. More... | |
Static Public Member Functions inherited from GNet::SocketBase | |
| static bool | supports (Address::Family, int type, int protocol) |
| Returns true if sockets can be created with the given parameters. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from GNet::Socket | |
| Socket (Address::Family, int type, int protocol, const Config &) | |
| Socket (Address::Family, Descriptor s, const Accepted &, const Config &) | |
| Socket (Address::Family, Descriptor s, const Adopted &, const Config &) | |
| void | setOptionLinger (int onoff, int time) |
| void | setOptionKeepAlive () |
| void | setOptionFreeBind () |
Protected Member Functions inherited from GNet::SocketBase | |
| SocketBase (Address::Family, int type, int protocol) | |
| Constructor used by derived classes. More... | |
| SocketBase (Address::Family, Descriptor s) | |
| Constructor used by derived classes. More... | |
| SocketBase (Address::Family, Descriptor s, const Accepted &) | |
| Constructor used by StreamSocket::accept() to create a socket object from a newly accept()ed socket handle. More... | |
| SocketBase (const Raw &, int domain, int type, int protocol) | |
| Constructor for a raw socket. More... | |
| void | clearReason () |
| Clears the saved errno. More... | |
| void | saveReason () |
| Saves the current errno following error()/sizeError(). More... | |
| void | saveReason () const |
| Saves the current errno following error()/sizeError(). More... | |
| bool | isFamily (Address::Family) const |
| Returns true if the socket family is as given. More... | |
Static Protected Member Functions inherited from GNet::Socket | |
| static Address | getLocalAddress (Descriptor) |
Static Protected Member Functions inherited from GNet::SocketBase | |
| static bool | error (int rc) |
| Returns true if the given return code indicates an error. More... | |
| static bool | sizeError (ssize_type size) |
| Returns true if the given write() return value indicates an error. More... | |
A derivation of GNet::Socket for a stream socket.
| GNet::StreamSocket::StreamSocket | ( | Address::Family | af, |
| const Config & | config | ||
| ) |
Constructor.
Definition at line 476 of file gsocket.cpp.
Constructor overload specifically for a listening socket, which might need slightly different socket options.
Definition at line 483 of file gsocket.cpp.
| GNet::StreamSocket::StreamSocket | ( | const Listener & | , |
| Descriptor | fd, | ||
| const Config & | config | ||
| ) |
Constructor overload for adopting an externally-managed listening file descriptor.
Definition at line 490 of file gsocket.cpp.
| GNet::AcceptInfo GNet::StreamSocket::accept | ( | ) |
Accepts an incoming connection, returning a new()ed socket and the peer address.
Definition at line 527 of file gsocket.cpp.
|
overridevirtual |
Override from ReadWrite::read().
Implements G::ReadWrite.
Definition at line 508 of file gsocket.cpp.
|
static |
Returns true if stream sockets can be created with the given the address family.
This is a one-off run-time check on socket creation, with a warning if it fails. Note that a run-time check is useful when running a new binary on an old operating system.
Definition at line 448 of file gsocket.cpp.
|
overridevirtual |