/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef PEER_H
-#define PEER_H
+#pragma once
+
+#include "common-export.h"
#include <QAbstractSocket>
#include <QDataStream>
#include "authhandler.h"
#include "protocol.h"
+#include "quassel.h"
#include "signalproxy.h"
-class Peer : public QObject
+class COMMON_EXPORT Peer : public QObject
{
Q_OBJECT
public:
- explicit Peer(AuthHandler *authHandler, QObject *parent = 0);
+ explicit Peer(AuthHandler *authHandler, QObject *parent = nullptr);
virtual Protocol::Type protocol() const = 0;
virtual QString description() const = 0;
QString clientVersion() const;
void setClientVersion(const QString &clientVersion);
+ bool hasFeature(Quassel::Feature feature) const;
+ Quassel::Features features() const;
+ void setFeatures(Quassel::Features features);
+
int id() const;
void setId(int id);
QString _buildDate;
QString _clientVersion;
+ Quassel::Features _features;
int _id = -1;
};
// We need to special-case Peer* in attached signals/slots, so typedef it for the meta type system
-typedef Peer * PeerPtr;
+using PeerPtr = Peer *;
Q_DECLARE_METATYPE(PeerPtr)
QDataStream &operator<<(QDataStream &out, PeerPtr ptr);
void Peer::handle(const T &protoMessage)
{
switch(protoMessage.handler()) {
- case Protocol::SignalProxy:
+ case Protocol::Handler::SignalProxy:
if (!signalProxy()) {
qWarning() << Q_FUNC_INFO << "Cannot handle message without a SignalProxy!";
return;
signalProxy()->handle(this, protoMessage);
break;
- case Protocol::AuthHandler:
+ case Protocol::Handler::AuthHandler:
if (!authHandler()) {
qWarning() << Q_FUNC_INFO << "Cannot handle auth messages without an active AuthHandler!";
return;
return;
}
}
-
-#endif