/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2014 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#ifndef LEGACYPEER_H
#define LEGACYPEER_H
-#include <QDataStream>
-
#include "../../remotepeer.h"
-class QDataStream;
-
class LegacyPeer : public RemotePeer
{
Q_OBJECT
HeartBeatReply
};
- LegacyPeer(QTcpSocket *socket, QObject *parent = 0);
- ~LegacyPeer() {}
+ LegacyPeer(AuthHandler *authHandler, QTcpSocket *socket, QObject *parent = 0);
+
+ Protocol::Type protocol() const { return Protocol::LegacyProtocol; }
+ QString protocolName() const { return "the legacy protocol"; }
void setSignalProxy(SignalProxy *proxy);
+ void dispatch(const Protocol::RegisterClient &msg);
+ void dispatch(const Protocol::ClientDenied &msg);
+ void dispatch(const Protocol::ClientRegistered &msg);
+ void dispatch(const Protocol::SetupData &msg);
+ void dispatch(const Protocol::SetupFailed &msg);
+ void dispatch(const Protocol::SetupDone &msg);
+ void dispatch(const Protocol::Login &msg);
+ void dispatch(const Protocol::LoginFailed &msg);
+ void dispatch(const Protocol::LoginSuccess &msg);
+ void dispatch(const Protocol::SessionState &msg);
+
void dispatch(const Protocol::SyncMessage &msg);
void dispatch(const Protocol::RpcCall &msg);
void dispatch(const Protocol::InitRequest &msg);
void dispatch(const Protocol::HeartBeat &msg);
void dispatch(const Protocol::HeartBeatReply &msg);
- // FIXME: this is only used for the auth phase and should be replaced by something more generic
- void writeSocketData(const QVariant &item);
+signals:
+ void protocolError(const QString &errorString);
-private slots:
- void socketDataAvailable();
+ // only used in compat mode
+ void protocolVersionMismatch(int actual, int expected);
private:
- bool readSocketData(QVariant &item);
+ using RemotePeer::writeMessage;
+ void writeMessage(const QVariant &item);
+ void processMessage(const QByteArray &msg);
+
+ void handleHandshakeMessage(const QVariant &msg);
void handlePackedFunc(const QVariant &packedFunc);
void dispatchPackedFunc(const QVariantList &packedFunc);
- QDataStream _stream;
- qint32 _blockSize;
+ void toLegacyIrcUsersAndChannels(QVariantMap &initData);
+ void fromLegacyIrcUsersAndChannels(QVariantMap &initData);
+
bool _useCompression;
};