X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fpeerfactory.cpp;h=0dc0140d38b7eb054c892d072636822371e99068;hp=5c816e86c965bf6869ee95a483cd6d860dad0fd5;hb=365a99155c179e97c4321ceaee936d9729609cf3;hpb=9c6f27c7bf7cb9dee234383ed9347c077aa2bce9 diff --git a/src/common/peerfactory.cpp b/src/common/peerfactory.cpp index 5c816e86..0dc0140d 100644 --- a/src/common/peerfactory.cpp +++ b/src/common/peerfactory.cpp @@ -20,14 +20,26 @@ #include "peerfactory.h" +#include "protocols/datastream/datastreampeer.h" #include "protocols/legacy/legacypeer.h" + +PeerFactory::ProtoList PeerFactory::supportedProtocols() +{ + ProtoList result; + result.append(ProtoDescriptor(Protocol::DataStreamProtocol, DataStreamPeer::supportedFeatures())); + result.append(ProtoDescriptor(Protocol::LegacyProtocol, 0)); + return result; +} + + RemotePeer *PeerFactory::createPeer(const ProtoDescriptor &protocol, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent) { - return createPeer(QVector() << protocol, authHandler, socket, parent); + return createPeer(ProtoList() << protocol, authHandler, socket, parent); } -RemotePeer *PeerFactory::createPeer(const QVector &protocols, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent) + +RemotePeer *PeerFactory::createPeer(const ProtoList &protocols, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent) { foreach(const ProtoDescriptor &protodesc, protocols) { Protocol::Type proto = protodesc.first; @@ -35,6 +47,10 @@ RemotePeer *PeerFactory::createPeer(const QVector switch(proto) { case Protocol::LegacyProtocol: return new LegacyPeer(authHandler, socket, parent); + case Protocol::DataStreamProtocol: + if (DataStreamPeer::acceptsFeatures(features)) + return new DataStreamPeer(authHandler, socket, features, parent); + break; default: break; }