summaryrefslogtreecommitdiffstats
path: root/xbmc/interfaces/generic/ScriptRunner.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/interfaces/generic/ScriptRunner.h')
-rw-r--r--xbmc/interfaces/generic/ScriptRunner.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/xbmc/interfaces/generic/ScriptRunner.h b/xbmc/interfaces/generic/ScriptRunner.h
new file mode 100644
index 0000000..77d511d
--- /dev/null
+++ b/xbmc/interfaces/generic/ScriptRunner.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2017-2021 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/IAddon.h"
+#include "threads/Event.h"
+
+#include <string>
+
+class CScriptRunner
+{
+protected:
+ CScriptRunner();
+ virtual ~CScriptRunner() = default;
+
+ virtual bool IsSuccessful() const = 0;
+ virtual bool IsCancelled() const = 0;
+
+ ADDON::AddonPtr GetAddon() const;
+
+ bool StartScript(const ADDON::AddonPtr& addon, const std::string& path);
+ bool RunScript(const ADDON::AddonPtr& addon, const std::string& path, int handle, bool resume);
+
+ void SetDone();
+
+ static int ExecuteScript(const ADDON::AddonPtr& addon, const std::string& path, bool resume);
+ static int ExecuteScript(const ADDON::AddonPtr& addon,
+ const std::string& path,
+ int handle,
+ bool resume);
+
+private:
+ bool RunScriptInternal(const ADDON::AddonPtr& addon,
+ const std::string& path,
+ int handle,
+ bool resume,
+ bool wait = true);
+ bool WaitOnScriptResult(int scriptId, const std::string& path, const std::string& name);
+
+ ADDON::AddonPtr m_addon;
+
+ CEvent m_scriptDone;
+};