X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fpeerfactory.cpp;h=31923f86ac60ed057967de93183977304b73ab3d;hp=5c816e86c965bf6869ee95a483cd6d860dad0fd5;hb=HEAD;hpb=9c6f27c7bf7cb9dee234383ed9347c077aa2bce9 diff --git a/src/common/peerfactory.cpp b/src/common/peerfactory.cpp index 5c816e86..31923f86 100644 --- a/src/common/peerfactory.cpp +++ b/src/common/peerfactory.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,25 +20,40 @@ #include "peerfactory.h" +#include "protocols/datastream/datastreampeer.h" #include "protocols/legacy/legacypeer.h" -RemotePeer *PeerFactory::createPeer(const ProtoDescriptor &protocol, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent) +PeerFactory::ProtoList PeerFactory::supportedProtocols() { - return createPeer(QVector() << protocol, authHandler, socket, parent); + ProtoList result; + result.append(ProtoDescriptor(Protocol::DataStreamProtocol, DataStreamPeer::supportedFeatures())); + result.append(ProtoDescriptor(Protocol::LegacyProtocol, 0)); + return result; } -RemotePeer *PeerFactory::createPeer(const QVector &protocols, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent) +RemotePeer* PeerFactory::createPeer( + const ProtoDescriptor& protocol, AuthHandler* authHandler, QTcpSocket* socket, Compressor::CompressionLevel level, QObject* parent) { - foreach(const ProtoDescriptor &protodesc, protocols) { + return createPeer(ProtoList() << protocol, authHandler, socket, level, parent); +} + +RemotePeer* PeerFactory::createPeer( + const ProtoList& protocols, AuthHandler* authHandler, QTcpSocket* socket, Compressor::CompressionLevel level, QObject* parent) +{ + foreach (const ProtoDescriptor& protodesc, protocols) { Protocol::Type proto = protodesc.first; quint16 features = protodesc.second; - switch(proto) { - case Protocol::LegacyProtocol: - return new LegacyPeer(authHandler, socket, parent); - default: - break; + switch (proto) { + case Protocol::LegacyProtocol: + return new LegacyPeer(authHandler, socket, level, parent); + case Protocol::DataStreamProtocol: + if (DataStreamPeer::acceptsFeatures(features)) + return new DataStreamPeer(authHandler, socket, features, level, parent); + break; + default: + break; } } - return 0; + return nullptr; }