xbmc
BinaryAddonManager.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 <map>
14 #include <memory>
15 
16 namespace ADDON
17 {
18 
19  class IAddonInstanceHandler;
20 
21  class IAddon;
22  using AddonPtr = std::shared_ptr<IAddon>;
23 
24  class CAddonInfo;
25  using AddonInfoPtr = std::shared_ptr<CAddonInfo>;
26 
27  class CAddonDll;
28  typedef std::shared_ptr<CAddonDll> AddonDllPtr;
29 
30  class CBinaryAddonBase;
31  typedef std::shared_ptr<CBinaryAddonBase> BinaryAddonBasePtr;
32 
34  {
35  public:
36  CBinaryAddonManager() = default;
38  ~CBinaryAddonManager() = default;
39 
54  BinaryAddonBasePtr GetAddonBase(const AddonInfoPtr& addonInfo,
55  IAddonInstanceHandler* handler,
56  AddonDllPtr& addon);
57 
68  void ReleaseAddonBase(const BinaryAddonBasePtr& addonBase, IAddonInstanceHandler* handler);
69 
77  BinaryAddonBasePtr GetRunningAddonBase(const std::string& addonId) const;
78 
87  AddonPtr GetRunningAddon(const std::string& addonId) const;
88 
89  private:
90  mutable CCriticalSection m_critSection;
91 
92  std::map<std::string, BinaryAddonBasePtr> m_runningAddons;
93  };
94 
95 } /* namespace ADDON */
BinaryAddonBasePtr GetAddonBase(const AddonInfoPtr &addonInfo, IAddonInstanceHandler *handler, AddonDllPtr &addon)
Create or get available addon instance handle base.
Definition: BinaryAddonManager.cpp:20
Definition: BinaryAddonManager.h:33
BinaryAddonBasePtr GetRunningAddonBase(const std::string &addonId) const
Get running addon base class for a given addon id.
Definition: BinaryAddonManager.cpp:68
AddonPtr GetRunningAddon(const std::string &addonId) const
Used from other addon manager to get active addon over a from him created CAddonDll.
Definition: BinaryAddonManager.cpp:79
Definition: AddonInstanceHandler.h:33
void ReleaseAddonBase(const BinaryAddonBasePtr &addonBase, IAddonInstanceHandler *handler)
Release a running addon instance handle base.
Definition: BinaryAddonManager.cpp:53
Definition: Addon.cpp:39