/* * 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 "platform/Platform.h" #include namespace ADDON { class CAddonMgr; class CBinaryAddonManager; class CBinaryAddonCache; class CVFSAddonCache; class CServiceAddonManager; class CRepositoryUpdater; } // namespace ADDON namespace PVR { class CPVRManager; } namespace PLAYLIST { class CPlayListPlayer; } class CContextMenuManager; #ifdef HAS_PYTHON class XBPython; #endif #if defined(HAS_FILESYSTEM_SMB) namespace WSDiscovery { class IWSDiscovery; } #endif class CDataCacheCore; class CFavouritesService; class CNetworkBase; class CWinSystemBase; class CPowerManager; class CWeatherManager; namespace KODI { namespace ADDONS { class CExtsMimeSupportList; } namespace GAME { class CControllerManager; class CGameServices; } // namespace GAME namespace RETRO { class CGUIGameRenderManager; } } // namespace KODI namespace MEDIA_DETECT { class CDetectDVDMedia; } namespace PERIPHERALS { class CPeripherals; } class CInputManager; class CFileExtensionProvider; class CPlayerCoreFactory; class CDatabaseManager; class CProfileManager; class CEventLog; class CMediaManager; class CServiceManager { public: CServiceManager(); ~CServiceManager(); bool InitForTesting(); bool InitStageOne(); bool InitStageTwo(const std::string& profilesUserDataFolder); bool InitStageThree(const std::shared_ptr& profileManager); void DeinitTesting(); void DeinitStageThree(); void DeinitStageTwo(); void DeinitStageOne(); ADDON::CAddonMgr& GetAddonMgr(); ADDON::CBinaryAddonManager& GetBinaryAddonManager(); ADDON::CBinaryAddonCache& GetBinaryAddonCache(); KODI::ADDONS::CExtsMimeSupportList& GetExtsMimeSupportList(); ADDON::CVFSAddonCache& GetVFSAddonCache(); ADDON::CServiceAddonManager& GetServiceAddons(); ADDON::CRepositoryUpdater& GetRepositoryUpdater(); CNetworkBase& GetNetwork(); #ifdef HAS_PYTHON XBPython& GetXBPython(); #endif #if defined(HAS_FILESYSTEM_SMB) WSDiscovery::IWSDiscovery& GetWSDiscovery(); #endif PVR::CPVRManager& GetPVRManager(); CContextMenuManager& GetContextMenuManager(); CDataCacheCore& GetDataCacheCore(); /**\brief Get the platform object. This is save to be called after Init1() was called */ CPlatform& GetPlatform(); KODI::GAME::CControllerManager& GetGameControllerManager(); KODI::GAME::CGameServices& GetGameServices(); KODI::RETRO::CGUIGameRenderManager& GetGameRenderManager(); PERIPHERALS::CPeripherals& GetPeripherals(); PLAYLIST::CPlayListPlayer& GetPlaylistPlayer(); int init_level = 0; CFavouritesService& GetFavouritesService(); CInputManager& GetInputManager(); CFileExtensionProvider& GetFileExtensionProvider(); CPowerManager& GetPowerManager(); CWeatherManager& GetWeatherManager(); CPlayerCoreFactory& GetPlayerCoreFactory(); CDatabaseManager& GetDatabaseManager(); CMediaManager& GetMediaManager(); #if !defined(TARGET_WINDOWS) && defined(HAS_DVD_DRIVE) MEDIA_DETECT::CDetectDVDMedia& GetDetectDVDMedia(); #endif protected: struct delete_dataCacheCore { void operator()(CDataCacheCore* p) const; }; struct delete_contextMenuManager { void operator()(CContextMenuManager* p) const; }; struct delete_favouritesService { void operator()(CFavouritesService* p) const; }; std::unique_ptr m_addonMgr; std::unique_ptr m_binaryAddonManager; std::unique_ptr m_binaryAddonCache; std::unique_ptr m_extsMimeSupportList; std::unique_ptr m_vfsAddonCache; std::unique_ptr m_serviceAddons; std::unique_ptr m_repositoryUpdater; #if defined(HAS_FILESYSTEM_SMB) std::unique_ptr m_WSDiscovery; #endif #ifdef HAS_PYTHON std::unique_ptr m_XBPython; #endif std::unique_ptr m_PVRManager; std::unique_ptr m_contextMenuManager; std::unique_ptr m_dataCacheCore; std::unique_ptr m_Platform; std::unique_ptr m_playlistPlayer; std::unique_ptr m_gameControllerManager; std::unique_ptr m_gameServices; std::unique_ptr m_gameRenderManager; std::unique_ptr m_peripherals; std::unique_ptr m_favouritesService; std::unique_ptr m_inputManager; std::unique_ptr m_fileExtensionProvider; std::unique_ptr m_network; std::unique_ptr m_powerManager; std::unique_ptr m_weatherManager; std::unique_ptr m_playerCoreFactory; std::unique_ptr m_databaseManager; std::unique_ptr m_mediaManager; #if !defined(TARGET_WINDOWS) && defined(HAS_DVD_DRIVE) std::unique_ptr m_DetectDVDType; #endif };