#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()
+{
+ 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, Compressor::CompressionLevel level, QObject *parent)
{
- return createPeer(ProtoList() << protocol, authHandler, socket, parent);
+ return createPeer(ProtoList() << protocol, authHandler, socket, level, parent);
}
-RemotePeer *PeerFactory::createPeer(const ProtoList &protocols, AuthHandler *authHandler, QTcpSocket *socket, QObject *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);
+ 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;
}