File indexing completed on 2024-04-28 04:49:05

0001 /*
0002    SPDX-FileCopyrightText: 2015 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0003 
0004    SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #ifndef UPNPCONTROLCONNECTIONMANAGER_H
0008 #define UPNPCONTROLCONNECTIONMANAGER_H
0009 
0010 #include "upnpcontrolabstractservice.h"
0011 #include "upnpbasictypes.h"
0012 
0013 #include <memory>
0014 
0015 class UpnpControlConnectionManagerPrivate;
0016 
0017 class UpnpControlConnectionManager : public UpnpControlAbstractService
0018 {
0019     Q_OBJECT
0020 
0021     Q_PROPERTY(QString sourceProtocolInfo
0022                READ sourceProtocolInfo
0023                NOTIFY sourceProtocolInfoChanged)
0024 
0025     Q_PROPERTY(QString sinkProtocolInfo
0026                READ sinkProtocolInfo
0027                NOTIFY sinkProtocolInfoChanged)
0028 
0029     Q_PROPERTY(QString currentConnectionIDs
0030                READ currentConnectionIDs
0031                NOTIFY currentConnectionIDsChanged)
0032 
0033     Q_PROPERTY(bool hasPrepareForConnection
0034                READ hasPrepareForConnection
0035                NOTIFY hasPrepareForConnectionChanged)
0036 
0037     Q_PROPERTY(bool hasConnectionComplete
0038                READ hasConnectionComplete
0039                NOTIFY hasConnectionCompleteChanged)
0040 
0041 public:
0042 
0043     explicit UpnpControlConnectionManager(QObject *parent = nullptr);
0044 
0045     ~UpnpControlConnectionManager() override;
0046 
0047     [[nodiscard]] const QString& sourceProtocolInfo() const;
0048 
0049     [[nodiscard]] const QString& sinkProtocolInfo() const;
0050 
0051     [[nodiscard]] const QString& currentConnectionIDs() const;
0052 
0053     [[nodiscard]] bool hasPrepareForConnection() const;
0054 
0055     [[nodiscard]] bool hasConnectionComplete() const;
0056 
0057 public Q_SLOTS:
0058 
0059     UpnpControlAbstractServiceReply *getProtocolInfo();
0060 
0061     UpnpControlAbstractServiceReply *prepareForConnection(const QString &remoteProtocolInfo, const QString &remoteUDN, const QString &remoteServiceID, int remotePeerConnectionID, const QString &connectionDirection);
0062 
0063     UpnpControlAbstractServiceReply *connectionComplete(int currentConnectionID);
0064 
0065     UpnpControlAbstractServiceReply *getCurrentConnectionIDs();
0066 
0067     UpnpControlAbstractServiceReply *getCurrentConnectionInfo(int currentConnectionID);
0068 
0069 Q_SIGNALS:
0070 
0071     void sourceProtocolInfoChanged(const QString &protocolInfo);
0072 
0073     void sinkProtocolInfoChanged(const QString &protocolInfo);
0074 
0075     void currentConnectionIDsChanged(const QString &ids);
0076 
0077     void hasPrepareForConnectionChanged();
0078 
0079     void hasConnectionCompleteChanged();
0080 
0081 private Q_SLOTS:
0082 
0083 protected:
0084 
0085     void parseServiceDescription(QIODevice *serviceDescriptionContent) override;
0086 
0087     void parseEventNotification(const QString &eventName, const QString &eventValue) Q_DECL_OVERRIDE;
0088 
0089 private:
0090 
0091     std::unique_ptr<UpnpControlConnectionManagerPrivate> d;
0092 
0093 };
0094 
0095 #endif // UPNPCONTROLCONNECTIONMANAGER_H