#define IRCEVENT_H
#include "networkevent.h"
+#include "util.h"
class IrcEvent : public NetworkEvent {
public:
inline QString prefix() const { return _prefix; }
inline void setPrefix(const QString &prefix) { _prefix = prefix; }
+ inline QString nick() const { return nickFromMask(prefix()); }
+
inline QStringList params() const { return _params; }
inline void setParams(const QStringList ¶ms) { _params = params; }
}
+bool CoreSessionEventProcessor::checkParamCount(IrcEvent *e, int minParams) {
+ if(e->params().count() < minParams) {
+ if(e->type() == EventManager::IrcEventNumeric) {
+ qWarning() << "Command " << static_cast<IrcEventNumeric *>(e)->number() << " requires " << minParams << "params, got: " << e->params();
+ } else {
+ QString name = coreSession()->eventManager()->enumName(e->type());
+ qWarning() << qPrintable(name) << "requires" << minParams << "params, got:" << e->params();
+ }
+ e->stop();
+ return false;
+ }
+ return true;
+}
+
void CoreSessionEventProcessor::processIrcEventNumeric(IrcEventNumeric *e) {
switch(e->number()) {
#include <QObject>
class CoreSession;
+class IrcEvent;
class IrcEventNumeric;
class CoreSessionEventProcessor : public QObject {
Q_INVOKABLE void processIrcEventNumeric(IrcEventNumeric *event);
protected:
+ bool checkParamCount(IrcEvent *event, int minParams);
private:
CoreSession *_coreSession;