summaryrefslogtreecommitdiff
path: root/src/shared/directoryentry.h
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-05-23 23:08:05 +0200
committerMikaƫl Capelle <capelle.mikael@gmail.com>2020-05-23 23:08:33 +0200
commit20649ec027a6da0994819c0ce18c4862f8ff66f9 (patch)
tree7def64062ef136e0dfddb75899316e5562d4d108 /src/shared/directoryentry.h
parentfceca422db04ae9d8cd9ca5e2e21a06697293937 (diff)
Fix issues with very slow refresh time for large root data directories.
Diffstat (limited to 'src/shared/directoryentry.h')
-rw-r--r--src/shared/directoryentry.h21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h
index a28ceeae..0ee3c919 100644
--- a/src/shared/directoryentry.h
+++ b/src/shared/directoryentry.h
@@ -46,10 +46,18 @@ namespace std
namespace MOShared
{
+struct DirCompareByName
+{
+ bool operator()(const DirectoryEntry* a, const DirectoryEntry* b) const;
+};
+
+
class DirectoryEntry
{
public:
- DirectoryEntry(
+ using SubDirectories = std::set<DirectoryEntry*, DirCompareByName>;
+
+ DirectoryEntry(
std::wstring name, DirectoryEntry* parent, OriginID originID);
DirectoryEntry(
@@ -137,15 +145,7 @@ public:
std::vector<FileEntryPtr> getFiles() const;
- void getSubDirectories(
- std::vector<DirectoryEntry*>::const_iterator& begin,
- std::vector<DirectoryEntry*>::const_iterator& end) const
- {
- begin = m_SubDirectories.begin();
- end = m_SubDirectories.end();
- }
-
- const std::vector<DirectoryEntry*>& getSubDirectories() const
+ const SubDirectories& getSubDirectories() const
{
return m_SubDirectories;
}
@@ -238,7 +238,6 @@ public:
private:
using FilesMap = std::map<std::wstring, FileIndex>;
using FilesLookup = std::unordered_map<DirectoryEntryFileKey, FileIndex>;
- using SubDirectories = std::vector<DirectoryEntry*>;
using SubDirectoriesLookup = std::unordered_map<std::wstring, DirectoryEntry*>;
boost::shared_ptr<FileRegister> m_FileRegister;