summaryrefslogtreecommitdiff
path: root/sap/sapmanager.h
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2016-01-01 22:05:42 +0100
committerJavier <dev.git@javispedro.com>2016-01-01 22:05:42 +0100
commita45977185a485624095bff1a15024e9199eee676 (patch)
tree6cc57d085bdd01e493477c870dbe0548137998e1 /sap/sapmanager.h
parenta24034bdfea259cdc09c74217be75d4f9de0dce5 (diff)
downloadsapd-a45977185a485624095bff1a15024e9199eee676.tar.gz
sapd-a45977185a485624095bff1a15024e9199eee676.zip
reorganize source files into SAP and agents
Diffstat (limited to 'sap/sapmanager.h')
-rw-r--r--sap/sapmanager.h66
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