class CTCTags::TagMessage : public ClientProtocol::Message
{
+private:
+ void PushTarget(const char* target, char status)
+ {
+ if (status)
+ {
+ std::string rawtarget(1, status);
+ rawtarget.append(target);
+ PushParam(rawtarget);
+ }
+ else
+ PushParamRef(target);
+ }
+
public:
- TagMessage(User* source, const Channel* targetchan, const ClientProtocol::TagMap& Tags)
+ TagMessage(User* source, const Channel* targetchan, const ClientProtocol::TagMap& Tags, char status = 0)
: ClientProtocol::Message("TAGMSG", source)
{
- PushParamRef(targetchan->name);
+ PushTarget(targetchan->name.c_str(), status);
AddTags(Tags);
}
AddTags(Tags);
}
- TagMessage(User* source, const char* targetstr, const ClientProtocol::TagMap& Tags)
+ TagMessage(User* source, const char* targetstr, const ClientProtocol::TagMap& Tags, char status = 0)
: ClientProtocol::Message("TAGMSG", source)
{
- PushParam(targetstr);
+ PushTarget(targetstr, status);
+ AddTags(Tags);
+ }
+
+ TagMessage(const char* sourcestr, const char* targetstr, const ClientProtocol::TagMap& Tags, char status = 0)
+ : ClientProtocol::Message("TAGMSG", sourcestr)
+ {
+ PushTarget(targetstr, status);
AddTags(Tags);
}
};