2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
11 #include "IDirectory.h"
12 #include "threads/CriticalSection.h"
27 explicit CDir(DIR_CACHE_TYPE cacheType
);
28 CDir(CDir
&& dir
) = default;
29 CDir
& operator=(CDir
&& dir
) = default;
32 void SetLastAccess(unsigned int &accessCounter
);
33 unsigned int GetLastAccess() const { return m_lastAccess
; }
35 std::unique_ptr
<CFileItemList
> m_Items
;
36 DIR_CACHE_TYPE m_cacheType
;
38 CDir(const CDir
&) = delete;
39 CDir
& operator=(const CDir
&) = delete;
40 unsigned int m_lastAccess
;
43 CDirectoryCache(void);
44 virtual ~CDirectoryCache(void);
45 bool GetDirectory(const std::string
& strPath
, CFileItemList
&items
, bool retrieveAll
= false);
46 void SetDirectory(const std::string
& strPath
, const CFileItemList
&items
, DIR_CACHE_TYPE cacheType
);
47 void ClearDirectory(const std::string
& strPath
);
48 void ClearFile(const std::string
& strFile
);
49 void ClearSubPaths(const std::string
& strPath
);
51 void AddFile(const std::string
& strFile
);
52 bool FileExists(const std::string
& strPath
, bool& bInCache
);
54 void PrintStats() const;
57 void InitCache(const std::set
<std::string
>& dirs
);
58 void ClearCache(std::set
<std::string
>& dirs
);
61 std::map
<std::string
, CDir
> m_cache
;
63 mutable CCriticalSection m_cs
;
65 unsigned int m_accessCounter
;
68 unsigned int m_cacheHits
;
69 unsigned int m_cacheMisses
;
73 extern XFILE::CDirectoryCache g_directoryCache
;