From 712781ef33198acb7267e02ee6f8f9bfc8598d5a Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Thu, 14 Oct 2010 00:53:17 +0200 Subject: [PATCH 1/1] Use late CoreSessionEventProcessor handler rather than early EventStringifier ones Makes more sense that way. A few commands (kick, part, quit, nick) need to be handled in the session *after* they generated a MessageEvent. --- src/core/coresession.cpp | 4 ++-- src/core/coresessioneventprocessor.cpp | 6 +++--- src/core/coresessioneventprocessor.h | 6 +++--- src/core/eventstringifier.cpp | 9 ++++++--- src/core/eventstringifier.h | 6 +++--- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 0ea6dec0..504fdab0 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -96,11 +96,11 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) initScriptEngine(); eventManager()->registerObject(ircParser(), EventManager::NormalPriority); - eventManager()->registerObject(eventStringifier(), EventManager::HighPriority, "earlyProcess"); // some need to be sent before statechange eventManager()->registerObject(eventProcessor(), EventManager::HighPriority); // needs to process events *before* the stringifier! eventManager()->registerObject(eventStringifier(), EventManager::NormalPriority); eventManager()->registerObject(this, EventManager::LowPriority); // for sending MessageEvents to the client - eventManager()->registerObject(eventProcessor(), EventManager::LowPriority, "lateProcess"); // some events need to be handled after msg generation + // some events need to be handled after msg generation + eventManager()->registerObject(eventProcessor(), EventManager::LowPriority, "lateProcess"); // periodically save our session state connect(&(Core::instance()->syncTimer()), SIGNAL(timeout()), this, SLOT(saveSessionState())); diff --git a/src/core/coresessioneventprocessor.cpp b/src/core/coresessioneventprocessor.cpp index d5649730..7d5d2444 100644 --- a/src/core/coresessioneventprocessor.cpp +++ b/src/core/coresessioneventprocessor.cpp @@ -153,7 +153,7 @@ void CoreSessionEventProcessor::processIrcEventJoin(IrcEvent *e) { } } -void CoreSessionEventProcessor::processIrcEventKick(IrcEvent *e) { +void CoreSessionEventProcessor::lateProcessIrcEventKick(IrcEvent *e) { if(checkParamCount(e, 2)) { e->network()->updateNickFromMask(e->prefix()); IrcUser *victim = e->network()->ircUser(e->params().at(1)); @@ -270,7 +270,7 @@ void CoreSessionEventProcessor::processIrcEventMode(IrcEvent *e) { } } -void CoreSessionEventProcessor::processIrcEventNick(IrcEvent *e) { +void CoreSessionEventProcessor::lateProcessIrcEventNick(IrcEvent *e) { if(checkParamCount(e, 1)) { IrcUser *ircuser = e->network()->updateNickFromMask(e->prefix()); if(!ircuser) { @@ -288,7 +288,7 @@ void CoreSessionEventProcessor::processIrcEventNick(IrcEvent *e) { } } -void CoreSessionEventProcessor::processIrcEventPart(IrcEvent *e) { +void CoreSessionEventProcessor::lateProcessIrcEventPart(IrcEvent *e) { if(checkParamCount(e, 1)) { IrcUser *ircuser = e->network()->updateNickFromMask(e->prefix()); if(!ircuser) { diff --git a/src/core/coresessioneventprocessor.h b/src/core/coresessioneventprocessor.h index b99a778d..7b359d07 100644 --- a/src/core/coresessioneventprocessor.h +++ b/src/core/coresessioneventprocessor.h @@ -43,10 +43,10 @@ public: Q_INVOKABLE void processIrcEventCap(IrcEvent *event); // CAP framework Q_INVOKABLE void processIrcEventInvite(IrcEvent *event); Q_INVOKABLE void processIrcEventJoin(IrcEvent *event); - Q_INVOKABLE void processIrcEventKick(IrcEvent *event); + Q_INVOKABLE void lateProcessIrcEventKick(IrcEvent *event); Q_INVOKABLE void processIrcEventMode(IrcEvent *event); - Q_INVOKABLE void processIrcEventNick(IrcEvent *event); - Q_INVOKABLE void processIrcEventPart(IrcEvent *event); + Q_INVOKABLE void lateProcessIrcEventNick(IrcEvent *event); + Q_INVOKABLE void lateProcessIrcEventPart(IrcEvent *event); Q_INVOKABLE void processIrcEventPing(IrcEvent *event); Q_INVOKABLE void processIrcEventPong(IrcEvent *event); Q_INVOKABLE void processIrcEventQuit(IrcEvent *event); diff --git a/src/core/eventstringifier.cpp b/src/core/eventstringifier.cpp index 1578f78e..c301dbf9 100644 --- a/src/core/eventstringifier.cpp +++ b/src/core/eventstringifier.cpp @@ -154,7 +154,10 @@ void EventStringifier::processIrcEventJoin(IrcEvent *e) { displayMsg(e, Message::Join, e->params()[0], e->prefix(), e->params()[0]); } -void EventStringifier::earlyProcessIrcEventKick(IrcEvent *e) { +void EventStringifier::processIrcEventKick(IrcEvent *e) { + if(!checkParamCount(e, 2)) + return; + IrcUser *victim = e->network()->ircUser(e->params().at(1)); if(victim) { QString channel = e->params().at(0); @@ -178,7 +181,7 @@ void EventStringifier::processIrcEventMode(IrcEvent *e) { } // this needs to be called before the ircuser is renamed! -void EventStringifier::earlyProcessIrcEventNick(IrcEvent *e) { +void EventStringifier::processIrcEventNick(IrcEvent *e) { if(!checkParamCount(e, 1)) return; @@ -196,7 +199,7 @@ void EventStringifier::earlyProcessIrcEventNick(IrcEvent *e) { displayMsg(e, Message::Nick, newnick, sender, channel); } -void EventStringifier::earlyProcessIrcEventPart(IrcEvent *e) { +void EventStringifier::processIrcEventPart(IrcEvent *e) { if(!checkParamCount(e, 1)) return; diff --git a/src/core/eventstringifier.h b/src/core/eventstringifier.h index eeecac91..7bfd1f24 100644 --- a/src/core/eventstringifier.h +++ b/src/core/eventstringifier.h @@ -56,10 +56,10 @@ public: Q_INVOKABLE void processIrcEventInvite(IrcEvent *event); Q_INVOKABLE void processIrcEventJoin(IrcEvent *event); - Q_INVOKABLE void earlyProcessIrcEventKick(IrcEvent *event); + Q_INVOKABLE void processIrcEventKick(IrcEvent *event); Q_INVOKABLE void processIrcEventMode(IrcEvent *event); - Q_INVOKABLE void earlyProcessIrcEventNick(IrcEvent *event); - Q_INVOKABLE void earlyProcessIrcEventPart(IrcEvent *event); + Q_INVOKABLE void processIrcEventNick(IrcEvent *event); + Q_INVOKABLE void processIrcEventPart(IrcEvent *event); Q_INVOKABLE void processIrcEventPong(IrcEvent *event); Q_INVOKABLE void processIrcEventQuit(IrcEvent *event); Q_INVOKABLE void processIrcEventTopic(IrcEvent *event); -- 2.20.1