acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
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
10
class
CLASS_DECL_ACME file_system_cache :
11
virtual
public
::particle,
12
virtual
public
::unique_index_domain
13
{
14
public
:
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
critical_section_lock
Definition
critical_section.h:29
critical_section
Definition
critical_section.h:9
file_system_interface
Definition
file_system_interface.h:15
file_system_real_path_interface
Definition
file_system_real_path_interface.h:13
unique_index_domain
Definition
unique_index.h:9
filesystem
filesystem
file_system_cache.h
Generated by
1.17.0