diff options
Diffstat (limited to 'sap/sapmanager.h')
-rw-r--r-- | sap/sapmanager.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/sap/sapmanager.h b/sap/sapmanager.h new file mode 100644 index 0000000..5619e54 --- /dev/null +++ b/sap/sapmanager.h @@ -0,0 +1,66 @@ +#ifndef SAPMANAGER_H +#define SAPMANAGER_H + +#include <QtCore/QObject> +#include <QtCore/QMap> +#include <QtCore/QHash> +#include "sapserviceinfo.h" + +class SAPAgent; + +class SAPManager : public QObject +{ + Q_OBJECT + + explicit SAPManager(QObject *parent = 0); + Q_DISABLE_COPY(SAPManager) + +public: + static SAPManager * instance(); + + int registerServiceAgent(const SAPServiceInfo &service, SAPAgent *agent); + void unregisterServiceAgent(int agentId); + void unregisterServiceAgent(const QString &profile, SAPServiceInfo::Role role); + + int registeredAgentId(const QString &profile, SAPServiceInfo::Role role); + + bool isRegisteredAgent(int agentId) const; + SAPAgent *agent(int agentId); + SAPServiceInfo serviceInfo(int agentId) const; + + QSet<QString> allProfiles() const; + QSet<SAPAgent*> allAgents() const; + + struct RegisteredApplication { + QString package; + QString name; + int version; + bool preinstalled; + }; + + void registerApplicationPackage(const RegisteredApplication &app); + void registerApplicationPackage(const QString &package, const QString &name = QString(), int version = 1, bool preinstalled = false); + void unregisterApplicationPackage(const QString &package); + + QList<RegisteredApplication> allPackages() const; + +private: + int findUnusedAgentId() const; + QHash<QString, int>* profilesByRole(SAPServiceInfo::Role role); + +private: + struct RegisteredAgent { + int agentId; + SAPServiceInfo info; + SAPAgent *agent; + }; + + QMap<int, RegisteredAgent> _agents; + + QHash<QString, int> _consumerProfiles; + QHash<QString, int> _providerProfiles; + + QHash<QString, RegisteredApplication> _pkgs; +}; + +#endif // SAPMANAGER_H |