kodi
BinaryAddonBase.h
1 /*
2  * Copyright (C) 2005-2018 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 "threads/CriticalSection.h"
12 
13 #include <memory>
14 #include <string>
15 #include <unordered_set>
16 
17 namespace ADDON
18 {
19 
20  class IAddonInstanceHandler;
21 
22  class CAddonInfo;
23  using AddonInfoPtr = std::shared_ptr<CAddonInfo>;
24 
25  class CAddonDll;
26  typedef std::shared_ptr<CAddonDll> AddonDllPtr;
27 
28  class CBinaryAddonBase : public std::enable_shared_from_this<CBinaryAddonBase>
29  {
30  public:
31  explicit CBinaryAddonBase(const AddonInfoPtr& addonInfo) : m_addonInfo(addonInfo) { }
32 
33  const std::string& ID() const;
34 
35  AddonDllPtr GetAddon(IAddonInstanceHandler* handler);
36  void ReleaseAddon(IAddonInstanceHandler* handler);
37  size_t UsedInstanceCount() const;
38 
39  AddonDllPtr GetActiveAddon();
40 
41  void OnPreInstall();
42  void OnPostInstall(bool update, bool modal);
43  void OnPreUnInstall();
44  void OnPostUnInstall();
45 
46  private:
47  AddonInfoPtr m_addonInfo;
48 
49  mutable CCriticalSection m_critSection;
50  AddonDllPtr m_activeAddon;
51  std::unordered_set<IAddonInstanceHandler*> m_activeAddonHandlers;
52  };
53 
54 } /* namespace ADDON */
Definition: AddonInstanceHandler.h:33
Definition: BinaryAddonBase.h:28
Definition: Addon.cpp:39