Commit Graph

349 Commits

Author SHA1 Message Date
J-P Nurmi f4c22aff6c Incorporate CIRCSock::ForwardRaw353() into CClient::PutClient() 2015-09-20 23:22:02 +02:00
J-P Nurmi 69f1138052 CClient::PutClient(): handle away-notify and account-notify 2015-09-20 23:22:02 +02:00
J-P Nurmi cb84ecac9c Port CIRCSock::ParseISupport() to use CMessage 2015-09-20 23:22:01 +02:00
J-P Nurmi 6ad7cdb4a2 Resolve #818: "Got ZNC?" is a little weird real name 2015-09-20 23:22:01 +02:00
J-P Nurmi 57fb58bf71 Fix CModeMessage::GetModes()
Thanks to KindOne for finding the bug. CModeMessage::GetModes()
must trim the colon that CMessage::GetParams() may include.
2015-09-17 13:26:24 +02:00
J-P Nurmi 73d5f382f8 Docs for the CMessage-based module hooks 2015-09-10 01:38:53 +02:00
J-P Nurmi 7f03484899 CClient: add ATTACH command
The main benefit is that (unlike JOIN) ATTACH allows wildcards.
It's also nicely symmetric with DETACH.
2015-09-10 01:12:19 +02:00
J-P Nurmi 832430659f CClient: share the chan detaching code 2015-09-10 01:12:19 +02:00
J-P Nurmi 7916efa997 CClient: share the chan matching code 2015-09-10 01:12:19 +02:00
J-P Nurmi 1a3e9ecb86 Resolve #1045: Make CMessage retain the colon
If the colon was there when parsed, stick it back even if it would be
technically unnecessary.
2015-09-10 00:21:04 +02:00
J-P Nurmi ba76e041b9 Add OnNumericMessage() module hook (close #1069) 2015-09-07 16:41:15 +02:00
J-P Nurmi 1a7cf9d6ba CIRCSock: make the message handlers private
These should not be called from the outside of the class.
2015-09-07 00:00:29 +02:00
J-P Nurmi dae21026fa CIRCSock::OnErrorMessage() handler 2015-09-07 00:00:28 +02:00
J-P Nurmi 41b71e3a40 CIRCSock::OnPing/PongMessage() handlers 2015-09-07 00:00:28 +02:00
J-P Nurmi da06aacd4d CIRCSock::OnNumericMessage() handler 2015-09-07 00:00:28 +02:00
J-P Nurmi 0446aaa929 CIRCSock::OnModeMessage() handler 2015-09-07 00:00:27 +02:00
J-P Nurmi b8dbdb0a4b CIRCSock::OnWallopsMessage() handler 2015-09-07 00:00:27 +02:00
J-P Nurmi 1346718308 CIRCSock::OnCapabilityMessage() handler 2015-09-07 00:00:27 +02:00
J-P Nurmi d3f42cabeb CIRCSock::OnInviteMessage() handler 2015-09-07 00:00:27 +02:00
J-P Nurmi 05fbb52173 CIRCSock::OnAccountMessage() handler 2015-09-07 00:00:27 +02:00
J-P Nurmi d556a29218 CIRCSock::OnAwayMessage() handler 2015-09-07 00:00:27 +02:00
J-P Nurmi d53a2d1f24 CIRCSock::OnTextMessage() handler 2015-09-07 00:00:27 +02:00
J-P Nurmi 236bd7249f CIRCSock::OnActionMessage() handler 2015-09-07 00:00:26 +02:00
J-P Nurmi 74be5522d1 CIRCSock::OnCTCPMessage() handler 2015-09-07 00:00:26 +02:00
J-P Nurmi 30bb92fec3 CIRCSock::OnNoticeMessage() handler 2015-09-07 00:00:26 +02:00
J-P Nurmi b459cdf85b CIRCSock::OnTopicMessage() handler 2015-09-07 00:00:26 +02:00
J-P Nurmi 3349011a12 CIRCSock::OnKickMessage() handler 2015-09-07 00:00:26 +02:00
J-P Nurmi 9f9304a253 CIRCSock::OnPartMessage() handler 2015-09-07 00:00:26 +02:00
J-P Nurmi a2110da245 CIRCSock::OnJoinMessage() handler 2015-09-07 00:00:26 +02:00
J-P Nurmi a0a2b0fb4e CIRCSock::OnQuitMessage() handler 2015-09-07 00:00:25 +02:00
J-P Nurmi 41a9b36687 CIRCSock::OnNickMessage() handler 2015-09-07 00:00:25 +02:00
J-P Nurmi 5880bb4180 Add CMessage::GetType() 2015-09-07 00:00:25 +02:00
J-P Nurmi 795ea45f69 CIRCSock::ForwardRaw353(): use CMessage 2015-09-07 00:00:24 +02:00
J-P Nurmi 58fc0e91d7 Add CCTCPMessage::IsReply() 2015-09-07 00:00:24 +02:00
J-P Nurmi ec952024d7 Add CModeMessage 2015-09-07 00:00:24 +02:00
J-P Nurmi fa894a86b0 Add CNumericMessage 2015-09-07 00:00:24 +02:00
J-P Nurmi 0faafbf3bf Merge pull request #1056 from jpnurmi/handlecap
Implement CClient::HandleCap() using CMessage (ref #1013)
2015-09-04 20:49:11 +02:00
J-P Nurmi 2880368825 Merge pull request #1055 from jpnurmi/onctcpreplymessage
Add missing CModules::OnCTCPReplyMessage()
2015-09-03 20:11:38 +02:00
J-P Nurmi 2b18d6ee38 Merge pull request #1020 from jpnurmi/traffic
Calculate per-network traffic (#963)
2015-09-02 01:01:13 +02:00
J-P Nurmi a79acacfad Add missing CModules::OnCTCPReplyMessage() 2015-09-02 00:51:05 +02:00
J-P Nurmi 453401eef4 Implement CClient::HandleCap() using CMessage (ref #1013) 2015-09-02 00:08:43 +02:00
J-P Nurmi 31ba15d686 CClient::ReadLine(): use CMessage 2015-08-31 00:24:30 +02:00
J-P Nurmi e5b7f2c6df Make CBufLine hold a CMessage internally 2015-08-31 00:24:30 +02:00
J-P Nurmi f1dead9ff3 Add OnUserXxxMessage(CXxxMessage) module hooks 2015-08-30 15:50:12 +02:00
J-P Nurmi 82375eed65 Add CMessage::Clone()
Due to (intentional) lack of CFooMessage::operator=(CMessage), it was
a bit clumsy to do such copy-conversions:

    CMessage Copy = Message;
    CJoinMessage& JoinMsg = static_cast<CJoinMessage&>(Copy);
    // ...

vs.

    CJoinMessge JoinMsg;
    JoinMsg.Clone(Message);
    // ...

Alternatively, copy ctor(CMessage) and assignment operator=(CMessage)
could have been added to all CMessage subclasses. I've been trying to
avoid that, to make these operations very explicit. It has helped a
lot so far by preventing accidental copies.
2015-08-30 15:50:12 +02:00
J-P Nurmi de4ffb180c Add JoinMessage::GetKey() & SetKey()
This will be useful for implementing the upcoming OnUserJoinMessage()
module hook, that is allowed to modify the key.
2015-08-30 15:50:12 +02:00
J-P Nurmi 55385a5d58 Add CTargetMessage: a base class for "targeted" priv/chan messages
This will be useful for implementing the upcoming OnUserXxxMessage()
module hooks, that are allowed to modify the message target.
2015-08-30 15:50:12 +02:00
J-P Nurmi 320abef756 Merge CChanMessage & CPrivMessage to... CTextMessage
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.
2015-08-30 15:50:12 +02:00
J-P Nurmi 3976651c35 Merge CChan+PrivAction, CChan+PrivCTCP, CChan+PrivNotice
OnUserAction(), OnUserCTCP(), and OnUserNotice() don't separate private
private and channel messages. A module could even redirect a message by
modifying its target, so technically, if they were two distinct types,
the type of a message could change on the way.

The original reason for the separation was that at some point during
CMessage development, GetChan() didn't exist in CPrivXxx, but only in
CChanXxx message types. To achieve cleaner implementation, the getter
was later promoted to CMessage and made return nullptr for non-channel
specific messages. From this point of view, the separation is also no
longer necessary since the CPrivXxx and CChanXxx types are API-wise
identical with each other.
2015-08-30 15:50:12 +02:00
J-P Nurmi 0ecc0d464f Make params optiona for the CMessage(CNick, CString, ...) ctor
Also fixes the build for Clang <= 3.4, broken by 9a7df7c.
2015-08-27 13:21:45 +02:00