Skip to content

Commit

Permalink
Merge CChanMessage & CPrivMessage to... CTextMessage
Browse files Browse the repository at this point in the history
This naming is a bit hairy. I chose CTextMessage because this type of
message carries a text argument. Alternatively, it could be also called
CPrivateMessage, because the IRC protocol calls it PRIVMSG. On the other
hand, ZNC module hooks use the "Priv" naming convention for private
messages. It would look a bit weird to have OnChanMsg(CPrivMessage)...

More details and reasoning of the merge in the previous commit message.
  • Loading branch information
jpnurmi committed Aug 30, 2015
1 parent 3976651 commit 320abef
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 26 deletions.
21 changes: 7 additions & 14 deletions include/znc/Message.h
Expand Up @@ -93,12 +93,6 @@ class CActionMessage : public CMessage {
void SetText(const CString& sText) { SetParam(1, "\001ACTION " + sText + "\001"); }
};

class CChanMessage : public CMessage {
public:
CString GetText() const { return GetParam(1); }
void SetText(const CString& sText) { SetParam(1, sText); }
};

class CCTCPMessage : public CMessage {
public:
CString GetText() const { return GetParam(1).TrimPrefix_n("\001").TrimSuffix_n("\001"); }
Expand Down Expand Up @@ -136,18 +130,18 @@ class CPartMessage : public CMessage {
void SetReason(const CString& sReason) { SetParam(1, sReason); }
};

class CPrivMessage : public CMessage {
public:
CString GetText() const { return GetParam(1); }
void SetText(const CString& sText) { SetParam(1, sText); }
};

class CQuitMessage : public CMessage {
public:
CString GetReason() const { return GetParam(0); }
void SetReason(const CString& sReason) { SetParam(0, sReason); }
};

class CTextMessage : public CMessage {
public:
CString GetText() const { return GetParam(1); }
void SetText(const CString& sText) { SetParam(1, sText); }
};

class CTopicMessage : public CMessage {
public:
CString GetTopic() const { return GetParam(1); }
Expand All @@ -158,15 +152,14 @@ class CTopicMessage : public CMessage {
// They provide convenient access to message type speficic attributes, but are not
// allowed to hold extra data of their own.
static_assert(sizeof(CActionMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CChanMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CCTCPMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CJoinMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CNoticeMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CPartMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CPrivMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CNickMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CKickMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CQuitMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CTextMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");
static_assert(sizeof(CTopicMessage) == sizeof(CMessage), "No data members allowed in CMessage subclasses.");

#endif // !_MESSAGE_H
8 changes: 4 additions & 4 deletions include/znc/Modules.h
Expand Up @@ -790,15 +790,15 @@ class CModule {
* @return See CModule::EModRet.
*/
virtual EModRet OnPrivMsg(CNick& Nick, CString& sMessage);
virtual EModRet OnPrivMessage(CPrivMessage& Message);
virtual EModRet OnPrivMessage(CTextMessage& Message);
/** Called when we receive a channel message <em>from IRC</em>.
* @param Nick The nick which sent the message.
* @param Channel The channel to which the message was sent.
* @param sMessage The message.
* @return See CModule::EModRet.
*/
virtual EModRet OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage);
virtual EModRet OnChanMessage(CChanMessage& Message);
virtual EModRet OnChanMessage(CTextMessage& Message);
/** Called when we receive a private notice.
* @param Nick The nick which sent the notice.
* @param sMessage The notice message.
Expand Down Expand Up @@ -1251,9 +1251,9 @@ class CModules : public std::vector<CModule*> {
bool OnChanAction(CNick& Nick, CChan& Channel, CString& sMessage);
bool OnChanActionMessage(CActionMessage& Message);
bool OnPrivMsg(CNick& Nick, CString& sMessage);
bool OnPrivMessage(CPrivMessage& Message);
bool OnPrivMessage(CTextMessage& Message);
bool OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage);
bool OnChanMessage(CChanMessage& Message);
bool OnChanMessage(CTextMessage& Message);
bool OnPrivNotice(CNick& Nick, CString& sMessage);
bool OnPrivNoticeMessage(CNoticeMessage& Message);
bool OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage);
Expand Down
4 changes: 2 additions & 2 deletions src/IRCSock.cpp
Expand Up @@ -1002,7 +1002,7 @@ bool CIRCSock::OnPrivNotice(CMessage& Message) {
}

bool CIRCSock::OnPrivMsg(CMessage& Message) {
CPrivMessage& PrivMsg = static_cast<CPrivMessage&>(Message);
CTextMessage& PrivMsg = static_cast<CTextMessage&>(Message);
bool bResult = false;
IRCSOCKMODULECALL(OnPrivMessage(PrivMsg), &bResult);
if (bResult) return true;
Expand Down Expand Up @@ -1087,7 +1087,7 @@ bool CIRCSock::OnChanNotice(CMessage& Message) {
}

bool CIRCSock::OnChanMsg(CMessage& Message) {
CChanMessage& ChanMsg = static_cast<CChanMessage&>(Message);
CTextMessage& ChanMsg = static_cast<CTextMessage&>(Message);
CChan* pChan = m_pNetwork->FindChan(ChanMsg.GetParam(0));
if (pChan) {
FixupChanNick(Message.GetNick(), pChan);
Expand Down
8 changes: 4 additions & 4 deletions src/Modules.cpp
Expand Up @@ -724,14 +724,14 @@ CModule::EModRet CModule::OnChanActionMessage(CActionMessage& Message) {
return ret;
}
CModule::EModRet CModule::OnPrivMsg(CNick& Nick, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnPrivMessage(CPrivMessage& Message) {
CModule::EModRet CModule::OnPrivMessage(CTextMessage& Message) {
CString sText = Message.GetText();
EModRet ret = OnPrivMsg(Message.GetNick(), sText);
Message.SetText(sText);
return ret;
}
CModule::EModRet CModule::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnChanMessage(CChanMessage& Message) {
CModule::EModRet CModule::OnChanMessage(CTextMessage& Message) {
CString sText = Message.GetText();
EModRet ret = OnChanMsg(Message.GetNick(), *Message.GetChan(), sText);
Message.SetText(sText);
Expand Down Expand Up @@ -938,9 +938,9 @@ bool CModules::OnPrivActionMessage(CActionMessage& Message) { MODHALTCHK(OnPrivA
bool CModules::OnChanAction(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanAction(Nick, Channel, sMessage)); }
bool CModules::OnChanActionMessage(CActionMessage& Message) { MODHALTCHK(OnChanActionMessage(Message)); }
bool CModules::OnPrivMsg(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivMsg(Nick, sMessage)); }
bool CModules::OnPrivMessage(CPrivMessage& Message) { MODHALTCHK(OnPrivMessage(Message)); }
bool CModules::OnPrivMessage(CTextMessage& Message) { MODHALTCHK(OnPrivMessage(Message)); }
bool CModules::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanMsg(Nick, Channel, sMessage)); }
bool CModules::OnChanMessage(CChanMessage& Message) { MODHALTCHK(OnChanMessage(Message)); }
bool CModules::OnChanMessage(CTextMessage& Message) { MODHALTCHK(OnChanMessage(Message)); }
bool CModules::OnPrivNotice(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivNotice(Nick, sMessage)); }
bool CModules::OnPrivNoticeMessage(CNoticeMessage& Message) { MODHALTCHK(OnPrivNoticeMessage(Message)); }
bool CModules::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanNotice(Nick, Channel, sMessage)); }
Expand Down
4 changes: 2 additions & 2 deletions test/MessageTest.cpp
Expand Up @@ -93,7 +93,7 @@ TEST(MessageTest, ChanCTCP) {

TEST(MessageTest, ChanMsg) {
CMessage msg(":sender PRIVMSG #chan :text");
CChanMessage& priv = static_cast<CChanMessage&>(msg);
CTextMessage& priv = static_cast<CTextMessage&>(msg);
EXPECT_EQ("sender", priv.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", priv.GetCommand());
EXPECT_EQ("text", priv.GetText());
Expand Down Expand Up @@ -176,7 +176,7 @@ TEST(MessageTest, PrivCTCP) {

TEST(MessageTest, PrivMsg) {
CMessage msg(":sender PRIVMSG receiver :foo bar");
CPrivMessage& priv = static_cast<CPrivMessage&>(msg);
CTextMessage& priv = static_cast<CTextMessage&>(msg);
EXPECT_EQ("sender", priv.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", priv.GetCommand());
EXPECT_EQ("foo bar", priv.GetText());
Expand Down

0 comments on commit 320abef

Please sign in to comment.