E-MailRelay
|
An interface used by the ServerProtocol class to assemble and process an incoming message. More...
#include <gprotocolmessage.h>
Public Types | |
using | DoneSignal = G::Slot::Signal< bool, const MessageId &, const std::string &, const std::string & > |
Public Member Functions | |
virtual | ~ProtocolMessage ()=default |
Destructor. | |
virtual DoneSignal & | doneSignal ()=0 |
Returns a signal which is raised once process() has completed. More... | |
virtual void | reset ()=0 |
Resets the object state as if just constructed. More... | |
virtual void | clear ()=0 |
Clears the message state and terminates any asynchronous message processing. More... | |
virtual MessageId | setFrom (const std::string &from_user, const std::string &from_auth)=0 |
Sets the message envelope 'from'. More... | |
virtual bool | addTo (VerifierStatus to_status)=0 |
Adds an envelope 'to'. More... | |
virtual void | addReceived (const std::string &)=0 |
Adds a 'received' line to the start of the content. More... | |
virtual bool | addText (const char *, std::size_t)=0 |
Adds text. More... | |
bool | addTextLine (const std::string &) |
A convenience function that calls addText() taking a string parameter and adding CR-LF. More... | |
virtual std::string | from () const =0 |
Returns the setFrom() string. More... | |
virtual void | process (const std::string &session_auth_id, const std::string &peer_socket_address, const std::string &peer_certificate)=0 |
Starts asynchronous processing of the message. More... | |
An interface used by the ServerProtocol class to assemble and process an incoming message.
It implements the three 'buffers' mentioned in RFC-2821 (esp. section 4.1.1).
This interface serves to decouple the protocol class from the downstream message processing – hence the name. Derived classes implement different types of downstream processing. For store-and-forward behaviour the ProtocolMessageStore class uses GSmtp::MessageStore to store messages; for proxying behaviour the ProtocolMessageForward class uses GSmtp::Client to do immediate forwarding.
The interface is used by the protocol class in the following sequence:
The process() method is asynchronous, but note that the completion signal may be emitted before the initiating call returns.
Definition at line 63 of file gprotocolmessage.h.
using GSmtp::ProtocolMessage::DoneSignal = G::Slot::Signal<bool,const MessageId&,const std::string&,const std::string&> |
Definition at line 66 of file gprotocolmessage.h.
|
pure virtual |
Adds a 'received' line to the start of the content.
Precondition: at least one successful addTo() call
Implemented in GSmtp::ProtocolMessageStore.
|
pure virtual |
Adds text.
The text should normally end in CR-LF. Returns false on error, typically because a size limit is reached.
Precondition: at least one successful addTo() call
Implemented in GSmtp::ProtocolMessageStore.
bool GSmtp::ProtocolMessage::addTextLine | ( | const std::string & | line | ) |
A convenience function that calls addText() taking a string parameter and adding CR-LF.
Definition at line 24 of file gprotocolmessage.cpp.
|
pure virtual |
Adds an envelope 'to'.
See also GSmtp::Verifier::verify(). Returns false if an invalid user.
Precondition: setFrom() called since clear() or process().
Implemented in GSmtp::ProtocolMessageStore.
|
pure virtual |
Clears the message state and terminates any asynchronous message processing.
Implemented in GSmtp::ProtocolMessageStore.
|
pure virtual |
Returns a signal which is raised once process() has completed.
The signal parameters are 'success', 'id', 'short-response' and 'full-reason'. As a special case, if success is true and id is invalid then the message processing was either abandoned or it only had local-mailbox recipients.
Implemented in GSmtp::ProtocolMessageStore.
|
pure virtual |
Returns the setFrom() string.
Implemented in GSmtp::ProtocolMessageStore.
|
pure virtual |
Starts asynchronous processing of the message.
Once processing is complete the message state is cleared and the doneSignal() is raised. The signal may be raised before process() returns.
The session-auth-id parameter is used to propagate authentication information from the SMTP AUTH command into individual messages. It is the empty string for unauthenticated clients. See also GAuth::SaslServer::id().
Implemented in GSmtp::ProtocolMessageStore.
|
pure virtual |
Resets the object state as if just constructed.
Implemented in GSmtp::ProtocolMessageStore.
|
pure virtual |
Sets the message envelope 'from'.
Implemented in GSmtp::ProtocolMessageStore.