E-MailRelay
|
A network client class that interacts with a remote server using a stateless line-based request/response protocol. More...
#include <grequestclient.h>
Public Member Functions | |
RequestClient (GNet::EventState, const std::string &key, const std::string &ok, const GNet::Location &host_and_service, unsigned int connection_timeout, unsigned int response_timeout, unsigned int idle_timeout) | |
Constructor. More... | |
void | request (const std::string &) |
Issues a request. More... | |
bool | busy () const |
Returns true after request() and before the subsequent event signal. More... | |
RequestClient (const RequestClient &)=delete | |
RequestClient (RequestClient &&)=delete | |
RequestClient & | operator= (const RequestClient &)=delete |
RequestClient & | operator= (RequestClient &&)=delete |
![]() | |
Client (EventState, const Location &remote_location, const Config &) | |
Constructor. More... | |
~Client () override | |
Destructor. More... | |
void | connect () |
Initiates a connection to the remote server. More... | |
bool | connected () const |
Returns true if connected to the peer. More... | |
bool | hasConnected () const |
Returns true if ever connected(). More... | |
std::string | peerAddressString (bool with_port=true) const |
Returns the peer address display string or the empty string if not connected(). More... | |
void | disconnect () |
Aborts the connection and destroys the object's internal state, resulting in a zombie object. More... | |
Address | localAddress () const override |
Returns the local address. More... | |
Address | peerAddress () const override |
Returns the peer address. More... | |
std::string | connectionState () const override |
Returns the connection state display string. More... | |
std::string | peerCertificate () const override |
Returns the peer's TLS certificate. More... | |
Location | remoteLocation () const |
Returns a Location structure, including the result of name lookup if available. More... | |
bool | send (const std::string &data) |
Sends data to the peer and starts the response timer (if configured). More... | |
bool | send (std::string_view data) |
Overload for string_view. More... | |
bool | send (const std::vector< std::string_view > &data, std::size_t offset=0) |
Overload for scatter/gather segments. More... | |
G::Slot::Signal< const std::string &, const std::string &, const std::string & > & | eventSignal () noexcept |
Returns a signal that indicates that something interesting has happened. More... | |
void | doOnDelete (const std::string &reason, bool done) |
This should be called by the Client owner (typically ClientPtr) just before this Client object is deleted as the result of an exception. More... | |
bool | finished () const |
Returns true if finish() has been called. More... | |
LineBufferState | lineBuffer () const |
Returns information about the state of the internal line-buffer. More... | |
bool | secureConnectCapable () const |
Returns true if currently connected and secureConnect() can be used. More... | |
Client (const Client &)=delete | |
Client (Client &&)=delete | |
Client & | operator= (const Client &)=delete |
Client & | operator= (Client &&)=delete |
bool | send (const char *, std::size_t)=delete |
bool | send (const char *)=delete |
bool | send (const std::string &, std::size_t)=delete |
![]() | |
virtual | ~Connection ()=default |
Destructor. | |
virtual Address | localAddress () const =0 |
Returns the connection's local address. More... | |
virtual Address | peerAddress () const =0 |
Returns the connection's peer address. More... | |
virtual std::string | connectionState () const =0 |
Returns the connection state as a display string. More... | |
virtual std::string | peerCertificate () const =0 |
Returns the peer's TLS certificate. More... | |
![]() | |
virtual | ~ExceptionSource () |
Destructor. | |
ExceptionSource (const ExceptionSource &)=delete | |
ExceptionSource (ExceptionSource &&)=delete | |
ExceptionSource & | operator= (const ExceptionSource &)=delete |
ExceptionSource & | operator= (ExceptionSource &&)=delete |
Additional Inherited Members | |
![]() | |
StreamSocket & | socket () |
Returns a reference to the socket. Throws if not connected. More... | |
const StreamSocket & | socket () const |
Returns a const reference to the socket. Throws if not connected. More... | |
void | finish () |
Indicates that the last data has been sent and the client is expecting a peer disconnect. More... | |
void | clearInput () |
Clears the input LineBuffer and cancels the response timer if running. More... | |
virtual bool | onReceive (const char *data, std::size_t size, std::size_t eolsize, std::size_t linesize, char c0)=0 |
Called with received data. More... | |
virtual void | onConnect ()=0 |
Called once connected. | |
virtual void | onSendComplete ()=0 |
Called when all residual data from send() has been sent. | |
virtual void | onDelete (const std::string &reason)=0 |
Called from doOnDelete(), typically just before a ClientPtr destroys the Client as the result of handling an exception. More... | |
void | secureConnect () |
Starts TLS/SSL client-side negotiation. More... | |
A network client class that interacts with a remote server using a stateless line-based request/response protocol.
Line buffering uses newline as end-of-line, and trailing carriage-returns are trimmed from the input.
The received network responses are delivered via the GNet::Client class's event signal (GNet::Client::eventSignal()).
Definition at line 46 of file grequestclient.h.
GSmtp::RequestClient::RequestClient | ( | GNet::EventState | es, |
const std::string & | key, | ||
const std::string & | ok, | ||
const GNet::Location & | host_and_service, | ||
unsigned int | connection_timeout, | ||
unsigned int | response_timeout, | ||
unsigned int | idle_timeout | ||
) |
Constructor.
The 'key' parameter is used in the callback signal. The 'ok' parameter is a response string that is converted to the empty string.
Definition at line 26 of file grequestclient.cpp.
bool GSmtp::RequestClient::busy | ( | ) | const |
Returns true after request() and before the subsequent event signal.
Definition at line 72 of file grequestclient.cpp.
void GSmtp::RequestClient::request | ( | const std::string & | request_payload | ) |
Issues a request.
A newline is added to the request string, so append a carriage-return if required.
If not currently connected then the request is queued up until the connection is made.
The base class's "event" signal will be emitted when processing is complete. In this case the first signal parameter will be the "key" string specified in the constructor call and the second will be the parsed response.
See also GNet::Client::eventSignal().
Every request will get a single response as long as this method is not called re-entrantly from within the previous request's response signal.
Definition at line 51 of file grequestclient.cpp.