/***************************************************************************
- * Copyright (C) 2005-2012 by the Quassel Project *
+ * Copyright (C) 2005-2013 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "coreusersettings.h"
#include "ctcpparser.h"
#include "eventstringifier.h"
+#include "internalpeer.h"
#include "ircchannel.h"
#include "ircparser.h"
#include "ircuser.h"
#include "logger.h"
#include "messageevent.h"
-#include "signalproxy.h"
#include "storage.h"
#include "util.h"
+#include "protocols/legacy/legacypeer.h"
+
class ProcessMessagesEvent : public QEvent
{
public:
CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
: QObject(parent),
_user(uid),
- _signalProxy(new SignalProxy(SignalProxy::Server, 0, this)),
+ _signalProxy(new SignalProxy(SignalProxy::Server, this)),
_aliasManager(this),
_bufferSyncer(new CoreBufferSyncer(this)),
_backlogManager(new CoreBacklogManager(this)),
p->setHeartBeatInterval(30);
p->setMaxHeartBeatCount(60); // 30 mins until we throw a dead socket out
- connect(p, SIGNAL(peerRemoved(QIODevice *)), this, SLOT(removeClient(QIODevice *)));
+ connect(p, SIGNAL(peerRemoved(SignalProxy::AbstractPeer*)), SLOT(removeClient(SignalProxy::AbstractPeer*)));
- connect(p, SIGNAL(connected()), this, SLOT(clientsConnected()));
- connect(p, SIGNAL(disconnected()), this, SLOT(clientsDisconnected()));
+ connect(p, SIGNAL(connected()), SLOT(clientsConnected()));
+ connect(p, SIGNAL(disconnected()), SLOT(clientsDisconnected()));
p->attachSlot(SIGNAL(sendInput(BufferInfo, QString)), this, SLOT(msgFromClient(BufferInfo, QString)));
p->attachSignal(this, SIGNAL(displayMsg(Message)));
}
-void CoreSession::addClient(QIODevice *device)
+void CoreSession::addClient(RemotePeer *peer)
{
- if (!device) {
- qCritical() << "Invoking CoreSession::addClient with a QObject that is not a QIODevice!";
- }
- else {
- // if the socket is an orphan, the signalProxy adopts it.
- // -> we don't need to care about it anymore
- device->setParent(0);
- signalProxy()->addPeer(device);
- QVariantMap reply;
- reply["MsgType"] = "SessionInit";
- reply["SessionState"] = sessionState();
- SignalProxy::writeDataToDevice(device, reply);
- }
+ QVariantMap reply;
+ reply["MsgType"] = "SessionInit";
+ reply["SessionState"] = sessionState();
+ peer->writeSocketData(reply);
+ signalProxy()->addPeer(peer);
}
-void CoreSession::addClient(SignalProxy *proxy)
+void CoreSession::addClient(InternalPeer *peer)
{
- signalProxy()->addPeer(proxy);
+ signalProxy()->addPeer(peer);
emit sessionState(sessionState());
}
-void CoreSession::removeClient(QIODevice *iodev)
+void CoreSession::removeClient(SignalProxy::AbstractPeer *peer)
{
- QTcpSocket *socket = qobject_cast<QTcpSocket *>(iodev);
- if (socket)
- quInfo() << qPrintable(tr("Client")) << qPrintable(socket->peerAddress().toString()) << qPrintable(tr("disconnected (UserId: %1).").arg(user().toInt()));
+ RemotePeer *p = qobject_cast<RemotePeer *>(peer);
+ if (p)
+ quInfo() << qPrintable(tr("Client")) << p->description() << qPrintable(tr("disconnected (UserId: %1).").arg(user().toInt()));
}