Audacity 3.2.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper Class Referencefinal
Collaboration diagram for audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper:
[legend]

Public Member Functions

 Housekeeper ()
 

Private Member Functions

void OnAppInitialized ()
 
void PerformHousekeeping ()
 
void OnAppClosing ()
 

Private Attributes

std::future< void > mHousekeepingOperation
 
std::atomic< bool > mHousekeepingCancelled { false }
 

Detailed Description

Definition at line 29 of file CloudSyncHousekeeper.cpp.

Constructor & Destructor Documentation

◆ Housekeeper()

audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper::Housekeeper ( )
inline

Definition at line 32 of file CloudSyncHousekeeper.cpp.

References AppEvents::OnAppClosing(), and AppEvents::OnAppInitialized().

Here is the call graph for this function:

Member Function Documentation

◆ OnAppClosing()

void audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper::OnAppClosing ( )
inlineprivate

Definition at line 82 of file CloudSyncHousekeeper.cpp.

83 {
84 mHousekeepingCancelled.store(true);
85 if (mHousekeepingOperation.valid())
87
88 auto& cloudProjectsDatabase = CloudProjectsDatabase::Get();
89
90 auto connectionLock = cloudProjectsDatabase.GetConnection();
91
92 if (!connectionLock)
93 return;
94
95 auto vacuumStatement = connectionLock->CreateStatement("VACUUM");
96
97 if (!vacuumStatement)
98 return;
99
100 vacuumStatement->Prepare().Run();
101 }

References audacity::cloud::audiocom::sync::CloudProjectsDatabase::Get().

Here is the call graph for this function:

◆ OnAppInitialized()

void audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper::OnAppInitialized ( )
inlineprivate

◆ PerformHousekeeping()

void audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper::PerformHousekeeping ( )
inlineprivate

Definition at line 44 of file CloudSyncHousekeeper.cpp.

45 {
46 const auto timeToKeep = std::chrono::hours(24 * DaysToKeepFiles.Read());
47 const auto now = std::chrono::system_clock::now();
48
49 auto& cloudProjectsDatabase = CloudProjectsDatabase::Get();
50
51 auto projects = cloudProjectsDatabase.GetCloudProjects();
52
53 for (const auto& project : projects)
54 {
55 if (mHousekeepingCancelled.load())
56 return;
57
58 const auto path = ToWXString(project.LocalPath);
59
60 if (!wxFileExists(path))
61 {
62 cloudProjectsDatabase.DeleteProject(project.ProjectId);
63 continue;
64 }
65
66 const auto lastAccess =
67 std::max(project.LastModified, project.LastRead);
68
69 const auto discardTreshold =
70 std::chrono::system_clock::from_time_t(lastAccess) + timeToKeep;
71
72 if (discardTreshold > now)
73 continue;
74
75 if (wxRemoveFile(path))
76 cloudProjectsDatabase.DeleteProject(project.ProjectId);
77 }
78
79 // Do we need to remove the files that are not in the database?
80 }
const auto project
bool Read(T *pVar) const
overload of Read returning a boolean that is true if the value was previously defined *‍/
Definition: Prefs.h:207
wxString ToWXString(const std::string &str)

References audacity::cloud::audiocom::DaysToKeepFiles, audacity::cloud::audiocom::sync::CloudProjectsDatabase::Get(), project, Setting< T >::Read(), and audacity::ToWXString().

Here is the call graph for this function:

Member Data Documentation

◆ mHousekeepingCancelled

std::atomic<bool> audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper::mHousekeepingCancelled { false }
private

Definition at line 104 of file CloudSyncHousekeeper.cpp.

◆ mHousekeepingOperation

std::future<void> audacity::cloud::audiocom::sync::anonymous_namespace{CloudSyncHousekeeper.cpp}::Housekeeper::mHousekeepingOperation
private

Definition at line 103 of file CloudSyncHousekeeper.cpp.


The documentation for this class was generated from the following file: