ZNC
trunk
|
Here is a small explanation of how messages on IRC work, and how you can use this class to get useful information from the parsed message. More...
#include <Message.h>
Public Types | |
enum class | Type { Unknown , Account , Action , Away , Capability , ChgHost , CTCP , Error , Invite , Join , Kick , Mode , Nick , Notice , Numeric , Part , Ping , Pong , Quit , Text , Topic , Wallops } |
enum | FormatFlags { IncludeAll = 0x0 , ExcludePrefix = 0x1 , ExcludeTags = 0x2 } |
Public Member Functions | |
CMessage (const CString &sMessage="") | |
CMessage (const CNick &Nick, const CString &sCommand, const VCString &vsParams=VCString(), const MCString &mssTags=MCString::EmptyMap) | |
Type | GetType () const |
bool | Equals (const CMessage &Other) const |
void | Clone (const CMessage &Other) |
CIRCNetwork * | GetNetwork () const |
void | SetNetwork (CIRCNetwork *pNetwork) |
CClient * | GetClient () const |
void | SetClient (CClient *pClient) |
CChan * | GetChan () const |
void | SetChan (CChan *pChan) |
CNick & | GetNick () |
const CNick & | GetNick () const |
void | SetNick (const CNick &Nick) |
const CString & | GetCommand () const |
void | SetCommand (const CString &sCommand) |
const VCString & | GetParams () const |
VCString | GetParamsSplit (unsigned int uIdx, unsigned int uLen=-1) const |
Get a subset of the message parameters. More... | |
void | SetParams (const VCString &vsParams) |
void | SetParams (VCString &&vsParams) |
CString | GetParams (unsigned int uIdx, unsigned int uLen=-1) const ZNC_MSG_DEPRECATED("Use GetParamsColon() instead") |
CString | GetParamsColon (unsigned int uIdx, unsigned int uLen=-1) const |
CString | GetParam (unsigned int uIdx) const |
void | SetParam (unsigned int uIdx, const CString &sParam) |
const timeval & | GetTime () const |
void | SetTime (const timeval &ts) |
const MCString & | GetTags () const |
void | SetTags (const MCString &mssTags) |
CString | GetTag (const CString &sKey) const |
void | SetTag (const CString &sKey, const CString &sValue) |
CString | ToString (unsigned int uFlags=IncludeAll) const |
void | Parse (const CString &sMessage) |
template<typename M > | |
M & | As () & |
template<typename M > | |
const M & | As () const & |
template<typename M , typename = typename std::enable_if< std::is_base_of<CMessage, M>{}>::type> | |
operator M& () & | |
template<typename M , typename = typename std::enable_if< std::is_base_of<CMessage, M>{}>::type> | |
operator const M & () const & | |
Here is a small explanation of how messages on IRC work, and how you can use this class to get useful information from the parsed message.
The output varies greatly and this advice may not apply to every message type, but this will hopefully help you understand how it works more accurately.
@t=some-tag :server.network.net 366 something #channel :End of /NAMES list. tags nick cmd 0 1 2
tags
is the IRCv3 tags associated with the message, obtained with GetTag("t"). the @time tag can also be obtained with GetTime(), some messages have other tags with them. Tags may not always be present. Refer to IRCv3 for documentation on tags.nick
is the sender, which can be obtained with GetNick()cmd
is command, which is obtained via GetCommand()0
, 1
, ... are parameters, available via GetParam(n), which removes the leading colon (:). If you don't want to remove the colon, use GetParamsColon().For certain events, like a PRIVMSG, convienience commands like GetChan() and GetNick() are available, this is not true for all CMessage extensions.
|
strong |
|
explicit |
CMessage::CMessage | ( | const CNick & | Nick, |
const CString & | sCommand, | ||
const VCString & | vsParams = VCString() , |
||
const MCString & | mssTags = MCString::EmptyMap |
||
) |
|
inline |
|
inline |
void CMessage::Clone | ( | const CMessage & | Other | ) |
bool CMessage::Equals | ( | const CMessage & | Other | ) | const |
Referenced by CBufLine::Equals().
|
inline |
|
inline |
|
inline |
Referenced by CNumericMessage::GetCode(), CBufLine::GetCommand(), and CCTCPMessage::IsReply().
|
inline |
|
inline |
Referenced by CNickMessage::GetOldNick().
|
inline |
CString CMessage::GetParam | ( | unsigned int | uIdx | ) | const |
Referenced by CJoinMessage::GetKey(), CKickMessage::GetKickedNick(), CModeMessage::GetModeList(), CChgHostMessage::GetNewHost(), CChgHostMessage::GetNewIdent(), CNickMessage::GetNewNick(), CKickMessage::GetReason(), CPartMessage::GetReason(), CQuitMessage::GetReason(), CTargetMessage::GetTarget(), CActionMessage::GetText(), CCTCPMessage::GetText(), CNoticeMessage::GetText(), CTextMessage::GetText(), and CTopicMessage::GetTopic().
|
inline |
|
inline |
References GetParamsColon().
CString CMessage::GetParamsColon | ( | unsigned int | uIdx, |
unsigned int | uLen = -1 |
||
) | const |
Referenced by CModeMessage::GetModes(), and GetParams().
VCString CMessage::GetParamsSplit | ( | unsigned int | uIdx, |
unsigned int | uLen = -1 |
||
) | const |
Get a subset of the message parameters.
This allows accessing a vector of a specific range of parameters, allowing easy inline use, such as pChan->SetModes(Message.GetParam(2), Message.GetParamsSplit(3));
uIdx | The index of the first parameter to retrieve |
uLen | How many parameters to retrieve |
Referenced by CModeMessage::GetModeParams().
|
inline |
Referenced by CBufLine::GetTags().
|
inline |
Referenced by CBufLine::GetTime().
|
inline |
|
inline |
|
inline |
void CMessage::Parse | ( | const CString & | sMessage | ) |
Referenced by CBufLine::SetFormat().
|
inline |
|
inline |
void CMessage::SetCommand | ( | const CString & | sCommand | ) |
|
inline |
|
inline |
void CMessage::SetParam | ( | unsigned int | uIdx, |
const CString & | sParam | ||
) |
Referenced by CJoinMessage::SetKey(), CKickMessage::SetKickedNick(), CChgHostMessage::SetNewHost(), CChgHostMessage::SetNewIdent(), CNickMessage::SetNewNick(), CKickMessage::SetReason(), CPartMessage::SetReason(), CQuitMessage::SetReason(), CTargetMessage::SetTarget(), CActionMessage::SetText(), CCTCPMessage::SetText(), CNoticeMessage::SetText(), CTextMessage::SetText(), and CTopicMessage::SetTopic().
void CMessage::SetParams | ( | const VCString & | vsParams | ) |
void CMessage::SetParams | ( | VCString && | vsParams | ) |
|
inline |
Referenced by CBufLine::SetTags().
|
inline |
Referenced by CBufLine::SetTime().
CString CMessage::ToString | ( | unsigned int | uFlags = IncludeAll | ) | const |
Referenced by CBufLine::GetFormat().