acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
file_system_cache.h
1// Created by camilo on 2025-10-19 16:53 <3ThomasBorregaardSørensen!!
2// From programming by camilo on 2025-10-19 17:28 <3ThomasBorregaardSørensen!! ThomasKanGodLideTalFem.
3#pragma once
4
5
6#include "acme/filesystem/filesystem/file_system_interface.h"
7#include "acme/filesystem/filesystem/file_system_cache_item.h"
8
9
10class CLASS_DECL_ACME file_system_cache :
11 virtual public ::particle,
12 virtual public ::unique_index_domain
13{
14public:
15
16
17 //::pointer < ::mutex > m_pmutexIncludeMatches;
18 //::pointer < ::mutex > m_pmutexIncludeHasScript;
19 //::pointer < ::mutex > m_pmutexIncludeExpandMd5;
20
21 ::pointer < ::mutex > m_pmutexFileSystemItem;
22 string_map_base < ::pointer < ::file_system_item > > m_mapFileSystemItem;
23 //string_map_base < ::logic::boolean > m_mapIncludeMatchesFileExists2;
24 //string_map_base < ::logic::boolean > m_mapIncludeMatchesIsDir2;
25 //string_map_base < ::logic::boolean > m_mapIncludeHasScript2;
26 //string_to_string_base m_mapIncludeExpandMd5;
27 critical_section m_criticalsectionFileSystemCacheItem;
28 index_map_base < ::file_system_cache_item > m_mapFileSystemCacheItem;
29
30
31 file_system_cache();
32 ~file_system_cache() override;
33
34
35 void on_initialize_particle() override;
36
37
38 ::file_system_cache_item& file_system_cache_item(const ::scoped_string& scopedstrName, const ::unique_index& uniqueindex)
39 {
40
41 critical_section_lock criticalsectionlock(&m_criticalsectionFileSystemCacheItem);
42
43 auto& pfilesystemcacheitem = m_mapFileSystemCacheItem[uniqueindex.index()];
44
45 if (!pfilesystemcacheitem)
46 {
47
48 criticalsectionlock.unlock();
49
50 auto pfilesystemcacheitemNew = file_system_item(scopedstrName);
51
52 criticalsectionlock.lock();
53
54 pfilesystemcacheitem = pfilesystemcacheitemNew;
55
56 }
57
58 return pfilesystemcacheitem;
59
60 }
61
62
63
64
65 //bool file_system_file_exists(const ::file_system_cache_item& pfilesystemcacheitem) override;
66 //bool file_system_is_folder(const ::file_system_cache_item& pfilesystemcacheitem) override;
67 //bool file_system_has_script(const ::file_system_cache_item& pfilesystemcacheitem) override;
68 //string file_system_expanded_md5(const ::file_system_cache_item& pfilesystemcacheitem) override;
69
70 virtual ::file_system_cache_item file_system_item(
71 const ::scoped_string & scopedstrName,
72 ::file_system_real_path_interface* pfilesystemrealpathinterface = nullptr,
73 ::file_system_interface* pfilesysteminterface = nullptr);
74
75
76 //virtual void set_include_matches_file_exists(const ::file_system_cache_item& pfilesystemcacheitem, bool bFileExists);
77 //virtual void set_include_expand_md5(const ::file_system_cache_item& pfilesystemcacheitem, const ::scoped_string& scopedstrMd5);
78
79
80 virtual void clear_file_system_cache_item(const ::scoped_string& scopedstrName);
81 virtual void clear_file_system_cache();
82
83
84};
85
86
Definition critical_section.h:29
Definition critical_section.h:9
Definition file_system_interface.h:15
Definition file_system_real_path_interface.h:13
Definition unique_index.h:9