xbmc
ScriptRunner.h
1 /*
2  * Copyright (C) 2017-2021 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "addons/IAddon.h"
12 #include "threads/Event.h"
13 
14 #include <string>
15 
17 {
18 protected:
19  CScriptRunner();
20  virtual ~CScriptRunner() = default;
21 
22  virtual bool IsSuccessful() const = 0;
23  virtual bool IsCancelled() const = 0;
24 
25  ADDON::AddonPtr GetAddon() const;
26 
27  bool StartScript(const ADDON::AddonPtr& addon, const std::string& path);
28  bool RunScript(const ADDON::AddonPtr& addon, const std::string& path, int handle, bool resume);
29 
30  void SetDone();
31 
32  static int ExecuteScript(const ADDON::AddonPtr& addon, const std::string& path, bool resume);
33  static int ExecuteScript(const ADDON::AddonPtr& addon,
34  const std::string& path,
35  int handle,
36  bool resume);
37 
38 private:
39  bool RunScriptInternal(const ADDON::AddonPtr& addon,
40  const std::string& path,
41  int handle,
42  bool resume,
43  bool wait = true);
44  bool WaitOnScriptResult(int scriptId, const std::string& path, const std::string& name);
45 
46  ADDON::AddonPtr m_addon;
47 
48  CEvent m_scriptDone;
49 };
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
Definition: ScriptRunner.h:16