Use late CoreSessionEventProcessor handler rather than early EventStringifier ones
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 13 Oct 2010 22:53:17 +0000 (00:53 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 13 Oct 2010 23:06:33 +0000 (01:06 +0200)
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
src/core/coresessioneventprocessor.cpp
src/core/coresessioneventprocessor.h
src/core/eventstringifier.cpp
src/core/eventstringifier.h

index 0ea6dec..504fdab 100644 (file)
@@ -96,11 +96,11 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
   initScriptEngine();
 
   eventManager()->registerObject(ircParser(), EventManager::NormalPriority);
   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::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()));
 
   // periodically save our session state
   connect(&(Core::instance()->syncTimer()), SIGNAL(timeout()), this, SLOT(saveSessionState()));
index d564973..7d5d244 100644 (file)
@@ -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));
   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) {
   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) {
   if(checkParamCount(e, 1)) {
     IrcUser *ircuser = e->network()->updateNickFromMask(e->prefix());
     if(!ircuser) {
index b99a778..7b359d0 100644 (file)
@@ -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 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 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);
   Q_INVOKABLE void processIrcEventPing(IrcEvent *event);
   Q_INVOKABLE void processIrcEventPong(IrcEvent *event);
   Q_INVOKABLE void processIrcEventQuit(IrcEvent *event);
index 1578f78..c301dbf 100644 (file)
@@ -154,7 +154,10 @@ void EventStringifier::processIrcEventJoin(IrcEvent *e) {
   displayMsg(e, Message::Join, e->params()[0], e->prefix(), e->params()[0]);
 }
 
   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);
   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!
 }
 
 // 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;
 
   if(!checkParamCount(e, 1))
     return;
 
@@ -196,7 +199,7 @@ void EventStringifier::earlyProcessIrcEventNick(IrcEvent *e) {
     displayMsg(e, Message::Nick, newnick, sender, channel);
 }
 
     displayMsg(e, Message::Nick, newnick, sender, channel);
 }
 
-void EventStringifier::earlyProcessIrcEventPart(IrcEvent *e) {
+void EventStringifier::processIrcEventPart(IrcEvent *e) {
   if(!checkParamCount(e, 1))
     return;
 
   if(!checkParamCount(e, 1))
     return;
 
index eeecac9..7bfd1f2 100644 (file)
@@ -56,10 +56,10 @@ public:
 
   Q_INVOKABLE void processIrcEventInvite(IrcEvent *event);
   Q_INVOKABLE void processIrcEventJoin(IrcEvent *event);
 
   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 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);
   Q_INVOKABLE void processIrcEventPong(IrcEvent *event);
   Q_INVOKABLE void processIrcEventQuit(IrcEvent *event);
   Q_INVOKABLE void processIrcEventTopic(IrcEvent *event);