summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/Service.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--xbmc/addons/Service.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/xbmc/addons/Service.h b/xbmc/addons/Service.h
new file mode 100644
index 0000000..38f1d1e
--- /dev/null
+++ b/xbmc/addons/Service.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2005-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "addons/Addon.h"
+#include "addons/AddonEvents.h"
+#include "threads/CriticalSection.h"
+
+namespace ADDON
+{
+ class CService: public CAddon
+ {
+ public:
+ explicit CService(const AddonInfoPtr& addonInfo);
+ };
+
+ class CServiceAddonManager
+ {
+ public:
+ explicit CServiceAddonManager(CAddonMgr& addonMgr);
+ ~CServiceAddonManager();
+
+ /**
+ * Start all services.
+ */
+ void Start();
+
+ /**
+ * Start service by add-on id.
+ */
+ void Start(const AddonPtr& addon);
+ void Start(const std::string& addonId);
+
+ /**
+ * Stop all services.
+ */
+ void Stop();
+
+ /**
+ * Stop service by add-on id.
+ */
+ void Stop(const std::string& addonId);
+
+ private:
+ void OnEvent(const AddonEvent& event);
+
+ void Stop(const std::map<std::string, int>::value_type& service);
+
+ CAddonMgr& m_addonMgr;
+ CCriticalSection m_criticalSection;
+ /** add-on id -> script id */
+ std::map<std::string, int> m_services;
+ };
+}