4#include "Stroika/Frameworks/StroikaPreComp.h"
7#include "Stroika/Foundation/Common/Property.h"
10#include "Stroika/Foundation/Execution/WaitableEvent.h"
12#include "MoreConfiguration.h"
22using namespace StroikaSample;
36AppSettings::Private_::MoreOptionsData_Storage_IMPL_::MoreOptionsData_Storage_IMPL_ ()
55 {
"Enabled"sv, &MoreOptionsData_::fEnabled},
56 {
"Last-Synchronized-At"sv, &MoreOptionsData_::fLastSynchronizedAt},
85 OptionsFile::mkFilenameMapper (
"Put-Your-App-Name-Here"sv)}
86 , fActualCurrentConfigData_{fOptionsFile_.Read<MoreOptionsData_> (MoreOptionsData_{})}
88 Set (fActualCurrentConfigData_);
90MoreOptionsData_ AppSettings::Private_::MoreOptionsData_Storage_IMPL_::Get ()
const
94 return fActualCurrentConfigData_;
96void AppSettings::Private_::MoreOptionsData_Storage_IMPL_::Set (
const MoreOptionsData_& v)
100 fActualCurrentConfigData_ = v;
101 fOptionsFile_.Write (v);
109void AppSettings::TestUse1 ()
112 if (gModuleConfiguration.Get ().fEnabled) {
122void AppSettings::TestUse2 ()
125 auto d = gModuleConfiguration.Get ();
127 if (d.fEnabled and d.fLastSynchronizedAt) {
137void AppSettings::TestUse3 ()
139 if (gModuleConfiguration.Get ().fEnabled) {
141 auto n = gModuleConfiguration.Get ();
143 gModuleConfiguration.Set (n);
152void AppSettings::TestUse4 ()
156 static const Duration kMinTime_ = 2min;
157 if (gModuleConfiguration.Update ([] (
const MoreOptionsData_& data) -> optional<MoreOptionsData_> {
158 if (data.fLastSynchronizedAt and *data.fLastSynchronizedAt + kMinTime_ > DateTime::Now ()) {
159 MoreOptionsData_ result = data;
160 result.fLastSynchronizedAt = DateTime::Now ();
165 sWaitableEvent_.Set ();
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.
ObjectVariantMapper can be used to map C++ types to and from variant-union types, which can be transp...
nonvirtual void AddClass(const Traversal::Iterable< StructFieldInfo > &fieldDescriptions, const ClassMapperOptions< CLASS > &mapperOptions={})
static const ModuleDataUpgraderType kDefaultUpgrader
Duration is a chrono::duration<double> (=.