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_ ()
56 {
"Enabled"sv, &MoreOptionsData_::fEnabled},
57 {
"Last-Synchronized-At"sv, &MoreOptionsData_::fLastSynchronizedAt},
86 OptionsFile::mkFilenameMapper (
"Put-Your-App-Name-Here"sv)}
87 , fActualCurrentConfigData_{fOptionsFile_.Read<MoreOptionsData_> (MoreOptionsData_{})}
89 Set (fActualCurrentConfigData_);
91MoreOptionsData_ AppSettings::Private_::MoreOptionsData_Storage_IMPL_::Get ()
const
95 return fActualCurrentConfigData_;
97void AppSettings::Private_::MoreOptionsData_Storage_IMPL_::Set (
const MoreOptionsData_& v)
101 fActualCurrentConfigData_ = v;
102 fOptionsFile_.Write (v);
110void AppSettings::TestUse1 ()
113 if (gModuleConfiguration.Get ().fEnabled) {
123void AppSettings::TestUse2 ()
126 auto d = gModuleConfiguration.Get ();
128 if (d.fEnabled and d.fLastSynchronizedAt) {
138void AppSettings::TestUse3 ()
140 if (gModuleConfiguration.Get ().fEnabled) {
142 auto n = gModuleConfiguration.Get ();
144 gModuleConfiguration.Set (n);
153void AppSettings::TestUse4 ()
157 static const Duration kMinTime_ = 2min;
158 if (gModuleConfiguration.Update ([] (
const MoreOptionsData_& data) -> optional<MoreOptionsData_> {
159 if (data.fLastSynchronizedAt and *data.fLastSynchronizedAt + kMinTime_ > DateTime::Now ()) {
160 MoreOptionsData_ result = data;
161 result.fLastSynchronizedAt = DateTime::Now ();
166 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> (=.