summaryrefslogtreecommitdiff
path: root/sapmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'sapmanager.h')
-rw-r--r--sapmanager.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/sapmanager.h b/sapmanager.h
new file mode 100644
index 0000000..e9f60cc
--- /dev/null
+++ b/sapmanager.h
@@ -0,0 +1,54 @@
+#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();
+
+signals:
+
+public slots:
+
+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;
+};
+
+#endif // SAPMANAGER_H