X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmessage.h;h=1624a1de42df747410247dc162bd08e690bfec87;hb=daf3be301d0181d14d1310b3ab5f79c8a85dfb46;hp=fb9e7619f70b473a1be57902578f99808cab6952;hpb=124c17e14134a4999afc1a5e981ab7c75b3694b9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/message.h b/include/message.h index fb9e7619f..1624a1de4 100644 --- a/include/message.h +++ b/include/message.h @@ -32,14 +32,23 @@ enum MessageType class CoreExport MessageDetails { public: + /** Whether to echo the message at all. */ + bool echo; + /* Whether to send the original message back to clients with echo-message support. */ - bool echooriginal; + bool echo_original; /** The users who are exempted from receiving this message. */ CUList exemptions; /* The original message as sent by the user. */ - const std::string originaltext; + const std::string original_text; + + /** IRCv3 message tags sent to the server by the user. */ + const ClientProtocol::TagMap tags_in; + + /** IRCv3 message tags sent out to users who get this message. */ + ClientProtocol::TagMap tags_out; /** The message which will be sent to clients. */ std::string text; @@ -47,9 +56,29 @@ class CoreExport MessageDetails /** The type of message. */ const MessageType type; - MessageDetails(MessageType mt, const std::string& msg) - : echooriginal(false) - , originaltext(msg) + /** Determines whether the specified message is a CTCP. If the specified message + * is a CTCP then the CTCP name and CTCP body are extracted and stored in the + * name and body references. + * @param name The location to store the parsed CTCP name. + * @param body The location to store the parsed CTCP body. + */ + virtual bool IsCTCP(std::string& name, std::string& body) const = 0; + + /** Determines whether the specified message is a CTCP. If the specified message + * is a CTCP then the CTCP name is extracted and stored in the name reference. + * @param name The location to store the parsed CTCP name. + */ + virtual bool IsCTCP(std::string& name) const = 0; + + /** Determines whether the specified message is a CTCP. */ + virtual bool IsCTCP() const = 0; + + protected: + MessageDetails(MessageType mt, const std::string& msg, const ClientProtocol::TagMap& tags) + : echo(true) + , echo_original(false) + , original_text(msg) + , tags_in(tags) , text(msg) , type(mt) {