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)
245 new(str) std::string(s);
248 Param(
int,
const std::string& s)
252 new(str) std::string(s);
279 bool IsOwned()
const {
return owned; }
282 typedef std::vector<Param> ParamList;
285 typedef std::vector<std::pair<SerializedInfo, SerializedMessage> > SerializedList;
291 mutable SerializedList serlist;
313 , command(cmd ? cmd : std::string())
314 , msginit_done(false)
328 Message(
const char* cmd,
const std::string& Sourcestr,
User* Sourceuser = NULL)
330 , command(cmd ? cmd : std::string())
331 , msginit_done(false)
385 void ReplaceParam(
unsigned int index,
const std::string& str) { params[index] =
Param(0, str); }
402 tags.insert(std::make_pair(tagname,
MessageTagData(tagprov, val, tagdata)));
410 tags.insert(newtags.begin(), newtags.end());
419 const SerializedMessage&
GetSerialized(
const SerializedInfo& serializeinfo)
const;
425 msginit_done =
false;
443 for (ParamList::iterator i = params.begin(); i != params.end(); ++i, j++)
451 void SetSideEffect(
bool Sideeffect) { sideeffect = Sideeffect; }
452 bool IsSideEffect()
const {
return sideeffect; }
454 friend class Serializer;
468 const MessageList* initialmsglist;
476 : event(&protoeventprov)
478 , initialmsglist(NULL)
479 , eventinit_done(false)
488 : event(&protoeventprov)
490 , initialmsglist(NULL)
491 , eventinit_done(false)
501 initialmsglist = NULL;
510 initialmsglist = &msglist;
567 return MOD_RES_PASSTHRU;
586 static std::string GetEventName(
const std::string& name)
588 return "event/protoevent_" + name;
597 EventHook(
Module* mod,
const std::string& name,
unsigned int priority = Events::ModuleEventListener::DefaultPriority)
661 : numeric(NULL,
"NUMERIC")
668 , topic(NULL,
"TOPIC")
669 , privmsg(NULL,
"PRIVMSG")
670 , invite(NULL,
"INVITE")
673 , error(NULL,
"ERROR")
735 inline ClientProtocol::MessageTagData::MessageTagData(
MessageTagProvider* prov,
const std::string& val,
void* data)
void SetMessage(Message *msg)
Definition: clientprotocol.h:498
Definition: clientprotocol.h:186
Definition: clientprotocol.h:627
void SetMessageList(const MessageList &msglist)
Definition: clientprotocol.h:507
void PushParam(const std::string &str)
Definition: clientprotocol.h:362
bool HandleTag(LocalUser *user, const std::string &tagname, std::string &tagvalue, TagMap &tags) const
Definition: clientprotocol.cpp:29
Definition: clientprotocol.h:521
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:144
void ReplaceParam(unsigned int index, const char *str)
Definition: clientprotocol.h:379
Definition: clientprotocol.h:464
void ClearParams()
Definition: clientprotocol.h:423
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:373
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:400
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:408
Event(EventProvider &protoeventprov)
Definition: clientprotocol.h:475
void ReplaceParamRef(unsigned int index, const std::string &str)
Definition: clientprotocol.h:392
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:542
void ReplaceParam(unsigned int index, const std::string &str)
Definition: clientprotocol.h:385
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:644
void PushParam(const char *str)
Definition: clientprotocol.h:357
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:298
EventProvider(Module *Mod, const std::string &eventname)
Definition: clientprotocol.h:635
void InvalidateCache()
Definition: clientprotocol.h:435
Message(const char *cmd, User *Sourceuser=NULL)
Definition: clientprotocol.h:311
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:341
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:487
Message(const char *cmd, const std::string &Sourcestr, User *Sourceuser=NULL)
Definition: clientprotocol.h:328
const char * GetCommand() const
Definition: clientprotocol.h:352
void PushParamRef(const std::string &str)
Definition: clientprotocol.h:368
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:553
Serializer(Module *mod, const char *Name)
Definition: clientprotocol.cpp:23
Definition: clientprotocol.h:583
virtual void OnEventInit(const ClientProtocol::Event &ev)
Definition: clientprotocol.h:606
void SetSource(const std::string &Sourcestr, User *Sourceuser=NULL)
Definition: clientprotocol.h:156
Definition: clientprotocol.h:536
Definition: typedefs.h:68
EventHook(Module *mod, const std::string &name, unsigned int priority=Events::ModuleEventListener::DefaultPriority)
Definition: clientprotocol.h:597
virtual ModResult OnProcessTag(User *user, const std::string &tagname, std::string &tagvalue)
Definition: clientprotocol.h:565
ModuleEventProvider(Module *mod, const std::string &eventid)
Definition: event.h:54
User * GetSourceUser() const
Definition: clientprotocol.h:138
Definition: clientprotocol.h:681
const TagMap & GetTags() const
Definition: clientprotocol.h:347
Definition: clientprotocol.h:93