25 namespace ClientProtocol
56 std::bitset<64> selection;
67 const size_t index = std::distance(tags.begin(), it);
68 return ((index < selection.size()) && (selection[index]));
78 const size_t index = std::distance(tags.begin(), it);
79 if (index < selection.size())
80 selection[index] =
true;
89 return (this->selection == other.selection);
96 const std::string* sourcestr;
146 sourceuser = Sourceuser;
158 sourcestr = &Sourcestr;
159 sourceuser = Sourceuser;
167 sourcestr = other.sourcestr;
168 sourceuser = other.sourceuser;
207 return ((serializer == other.serializer) && (tagwl == other.tagwl));
213 const std::string* ptr;
217 void InitFrom(
const Param& other)
221 new(str) std::string(*other.str);
227 operator const std::string&()
const {
return (owned ? *str : *ptr); }
235 Param(
const std::string& s)
241 Param(
int,
const char* s)
244 new(str) std::string(s);
247 Param(
int,
const std::string& s)
250 new(str) std::string(s);
277 bool IsOwned()
const {
return owned; }
280 typedef std::vector<Param> ParamList;
283 typedef std::vector<std::pair<SerializedInfo, SerializedMessage> > SerializedList;
289 mutable SerializedList serlist;
311 , command(cmd ? cmd : std::string())
312 , msginit_done(false)
326 Message(
const char* cmd,
const std::string& Sourcestr,
User* Sourceuser = NULL)
328 , command(cmd ? cmd : std::string())
329 , msginit_done(false)
383 void ReplaceParam(
unsigned int index,
const std::string& str) { params[index] =
Param(0, str); }
400 tags.insert(std::make_pair(tagname,
MessageTagData(tagprov, val, tagdata)));
408 tags.insert(newtags.begin(), newtags.end());
417 const SerializedMessage&
GetSerialized(
const SerializedInfo& serializeinfo)
const;
423 msginit_done =
false;
441 for (ParamList::iterator i = params.begin(); i != params.end(); ++i, j++)
449 void SetSideEffect(
bool Sideeffect) { sideeffect = Sideeffect; }
450 bool IsSideEffect()
const {
return sideeffect; }
452 friend class Serializer;
466 const MessageList* initialmsglist;
474 : event(&protoeventprov)
476 , initialmsglist(NULL)
477 , eventinit_done(false)
486 : event(&protoeventprov)
488 , initialmsglist(NULL)
489 , eventinit_done(false)
499 initialmsglist = NULL;
508 initialmsglist = &msglist;
565 return MOD_RES_PASSTHRU;
584 static std::string GetEventName(
const std::string& name)
586 return "event/protoevent_" + name;
595 EventHook(
Module* mod,
const std::string& name,
unsigned int priority = Events::ModuleEventListener::DefaultPriority)
659 : numeric(NULL,
"NUMERIC")
666 , topic(NULL,
"TOPIC")
667 , privmsg(NULL,
"PRIVMSG")
668 , invite(NULL,
"INVITE")
671 , error(NULL,
"ERROR")
733 inline ClientProtocol::MessageTagData::MessageTagData(
MessageTagProvider* prov,
const std::string& val,
void* data)
void SetMessage(Message *msg)
Definition: clientprotocol.h:496
Definition: clientprotocol.h:186
Definition: clientprotocol.h:625
void SetMessageList(const MessageList &msglist)
Definition: clientprotocol.h:505
void PushParam(const std::string &str)
Definition: clientprotocol.h:360
bool HandleTag(LocalUser *user, const std::string &tagname, std::string &tagvalue, TagMap &tags) const
Definition: clientprotocol.cpp:29
Definition: clientprotocol.h:519
bool IsSelected(const TagMap &tags, TagMap::const_iterator it) const
Definition: clientprotocol.h:65
virtual std::string Serialize(const Message &msg, const TagSelection &tagwl) const =0
ModuleEventListener(Module *mod, const std::string &eventid, unsigned int eventprio=DefaultPriority)
Definition: event.h:141
void ReplaceParam(unsigned int index, const char *str)
Definition: clientprotocol.h:377
Definition: clientprotocol.h:462
void ClearParams()
Definition: clientprotocol.h:421
void Select(const TagMap &tags, TagMap::const_iterator it)
Definition: clientprotocol.h:76
ClientProtocol::ParamList params
Definition: clientprotocol.h:45
void PushParamPlaceholder()
Definition: clientprotocol.h:371
void SetSourceUser(User *Sourceuser)
Definition: clientprotocol.h:144
const std::string * GetSource() const
Definition: clientprotocol.h:124
Definition: modules.h:221
void AddTag(const std::string &tagname, MessageTagProvider *tagprov, const std::string &val, void *tagdata=NULL)
Definition: clientprotocol.h:398
void SetSource(const MessageSource &other)
Definition: clientprotocol.h:165
void GetMessagesForUser(LocalUser *user, MessageList &messagelist)
Definition: clientprotocol.cpp:87
void AddTags(const ClientProtocol::TagMap &newtags)
Definition: clientprotocol.h:406
Event(EventProvider &protoeventprov)
Definition: clientprotocol.h:473
void ReplaceParamRef(unsigned int index, const std::string &str)
Definition: clientprotocol.h:390
virtual const std::string & GetFullHost()
Definition: users.cpp:160
bool operator==(const SerializedInfo &other) const
Definition: clientprotocol.h:205
MessageTagProvider(Module *mod)
Definition: clientprotocol.h:540
void ReplaceParam(unsigned int index, const std::string &str)
Definition: clientprotocol.h:383
virtual bool ShouldSendTag(LocalUser *user, const MessageTagData &tagdata)=0
Definition: clientprotocol.h:37
MessageSource(const std::string &Sourcestr, User *Sourceuser=NULL)
Definition: clientprotocol.h:116
Definition: clientprotocol.h:642
void PushParam(const char *str)
Definition: clientprotocol.h:355
Definition: clientprotocol.h:54
std::string cmd
Definition: clientprotocol.h:41
virtual ModResult OnPreEventSend(LocalUser *user, const ClientProtocol::Event &ev, ClientProtocol::MessageList &messagelist)=0
void SetCommand(const char *cmd)
Definition: clientprotocol.h:296
EventProvider(Module *Mod, const std::string &eventname)
Definition: clientprotocol.h:633
void InvalidateCache()
Definition: clientprotocol.h:433
Message(const char *cmd, User *Sourceuser=NULL)
Definition: clientprotocol.h:309
bool operator==(const TagSelection &other) const
Definition: clientprotocol.h:87
const SerializedMessage & GetSerialized(const SerializedInfo &serializeinfo) const
Definition: clientprotocol.cpp:72
const ParamList & GetParams() const
Definition: clientprotocol.h:339
SerializedInfo(const Serializer *Ser, const TagSelection &Tagwl)
Definition: clientprotocol.h:195
Definition: clientprotocol.h:211
ClientProtocol::TagMap tags
Definition: clientprotocol.h:49
Event(EventProvider &protoeventprov, ClientProtocol::Message &msg)
Definition: clientprotocol.h:485
Message(const char *cmd, const std::string &Sourcestr, User *Sourceuser=NULL)
Definition: clientprotocol.h:326
const char * GetCommand() const
Definition: clientprotocol.h:350
void PushParamRef(const std::string &str)
Definition: clientprotocol.h:366
Definition: modules.h:316
virtual bool Parse(LocalUser *user, const std::string &line, ParseOutput &parseoutput)=0
MessageSource(User *Sourceuser=NULL)
Definition: clientprotocol.h:104
const SerializedMessage & SerializeForUser(LocalUser *user, Message &msg)
Definition: clientprotocol.cpp:62
Definition: clientprotocol.h:181
virtual void OnPopulateTags(ClientProtocol::Message &msg)
Definition: clientprotocol.h:551
Serializer(Module *mod, const char *Name)
Definition: clientprotocol.cpp:23
Definition: clientprotocol.h:581
virtual void OnEventInit(const ClientProtocol::Event &ev)
Definition: clientprotocol.h:604
void SetSource(const std::string &Sourcestr, User *Sourceuser=NULL)
Definition: clientprotocol.h:156
Definition: clientprotocol.h:534
Definition: typedefs.h:68
EventHook(Module *mod, const std::string &name, unsigned int priority=Events::ModuleEventListener::DefaultPriority)
Definition: clientprotocol.h:595
virtual ModResult OnProcessTag(User *user, const std::string &tagname, std::string &tagvalue)
Definition: clientprotocol.h:563
ModuleEventProvider(Module *mod, const std::string &eventid)
Definition: event.h:54
User * GetSourceUser() const
Definition: clientprotocol.h:138
Definition: clientprotocol.h:679
const TagMap & GetTags() const
Definition: clientprotocol.h:345
Definition: clientprotocol.h:93