swift
modelcaches.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2016 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_SIMULATION_DATA_MODELCACHES
7 #define SWIFT_MISC_SIMULATION_DATA_MODELCACHES
8 
9 #include <atomic>
10 
11 #include <QDateTime>
12 #include <QObject>
13 
14 #include "misc/applicationinfo.h"
15 #include "misc/datacache.h"
19 #include "misc/statusmessage.h"
20 #include "misc/swiftmiscexport.h"
21 #include "misc/threadutils.h"
22 
23 namespace swift::misc::simulation::data
24 {
26  struct TModelCache : public TDataTrait<CAircraftModelList>
27  {
29  static constexpr bool isDeferred() { return true; }
30  };
31 
34 
36  struct TModelCacheXP : public TModelCache
37  {
39  static const char *key() { return "modelcachexp"; }
40  };
41 
43  struct TModelCacheP3D : public TModelCache
44  {
46  static const char *key() { return "modelcachep3d"; }
47  };
48 
50  struct TModelCacheFG : public TModelCache
51  {
53  static const char *key() { return "modelcachefg"; }
54  };
55 
57  struct TModelCacheMsfs : public TModelCache
58  {
60  static const char *key() { return "modelcachemsfs"; }
61  };
62 
65  {
67  static const char *key() { return "modelcachemsfs2024"; }
68  };
69 
71  struct TModelCacheLastSelection : public TDataTrait<CSimulatorInfo>
72  {
74  static constexpr bool isPinned() { return true; }
75 
78 
80  static const char *key() { return "modelcachelastselection"; }
81  };
83 
86 
88  struct TModelSetCacheXP : public TModelCache
89  {
91  static const char *key() { return "modelsetxp"; }
92  };
93 
96  {
98  static const char *key() { return "modelsetp3d"; }
99  };
100 
103  {
105  static const char *key() { return "modelsetfg"; }
106  };
107 
110  {
112  static const char *key() { return "modelsetmsfs"; }
113  };
114 
117  {
119  static const char *key() { return "modelsetmsfs2024"; }
120  };
121 
123  struct TSimulatorLastSelection : public TDataTrait<CSimulatorInfo>
124  {
126  static constexpr bool isPinned() { return true; }
127 
130 
132  static const char *key() { return "simulatorlastselection"; }
133  };
134 
136  struct TSimulatorLastSelections : public TDataTrait<CSimulatorInfo>
137  {
139  static constexpr bool isPinned() { return true; }
140 
143 
145  static const char *key() { return "simulatorlastselections"; }
146  };
148 
151  {
153  static const char *key() { return "vpilot/models"; }
154  };
155 
158  public QObject,
161  {
162  Q_OBJECT
165 
166  public:
168  void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
169 
171  int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
172 
175  virtual CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const = 0;
176 
178  CAircraftModelList getSynchronizedCachedModels(const CSimulatorInfo &simulator);
179 
181  int getCachedModelsCount(const CSimulatorInfo &simulator) const;
182 
184  virtual QString getFilename(const CSimulatorInfo &simulator) const = 0;
185 
187  bool hasOtherVersionFile(const swift::misc::CApplicationInfo &info, const CSimulatorInfo &simulator) const;
188 
190  CSimulatorInfo otherVersionSimulatorsWithFile(const swift::misc::CApplicationInfo &info) const;
191 
193  virtual QStringList getAllFilenames() const;
194 
196  CSimulatorInfo getSimulatorForFilename(const QString &filename) const;
197 
200  virtual QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const = 0;
201 
204  virtual CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) = 0;
205 
208  virtual bool isSaved(const CSimulatorInfo &simulator) const = 0;
209 
212  CSimulatorInfo simulatorsWithInitializedCache() const;
213 
216  CSimulatorInfo simulatorsWithModels() const;
217 
220  QDateTime getSynchronizedTimestamp(const CSimulatorInfo &simulator);
221 
224  virtual CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) = 0;
225 
228  virtual CStatusMessage clearCachedModels(const CSimulatorInfo &simulator);
229 
232  virtual void synchronizeCache(const CSimulatorInfo &simulator) = 0;
233 
236  bool isCacheAlreadySynchronized(const CSimulatorInfo &simulator) const;
237 
240  virtual void synchronizeMultiCaches(const CSimulatorInfo &simulator);
241 
244  virtual void admitCache(const CSimulatorInfo &simulator) = 0;
245 
248  virtual void admitMultiCaches(const CSimulatorInfo &simulator);
249 
252  QString getInfoString() const;
253 
256  QString getInfoStringFsFamily() const;
257 
260  QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const;
261 
263  virtual void gracefulShutdown();
264 
266  virtual QString getDescription() const = 0;
267 
268  signals:
272 
273  protected:
275  IMultiSimulatorModelCaches(QObject *parent = nullptr) : QObject(parent) {}
276 
279  void changedP3D() { this->emitCacheChanged(CSimulatorInfo::p3d()); }
280  void changedXP() { this->emitCacheChanged(CSimulatorInfo::xplane()); }
281  void changedFG() { this->emitCacheChanged(CSimulatorInfo::fg()); }
282  void changedMsfs() { this->emitCacheChanged(CSimulatorInfo::msfs()); }
283  void changedMsfs2024() { this->emitCacheChanged(CSimulatorInfo::msfs2024()); }
285 
288  void markCacheAsAlreadySynchronized(const CSimulatorInfo &simulator, bool synchronized);
289 
291  void emitCacheChanged(const CSimulatorInfo &simulator);
292 
293  private:
296  std::atomic_bool m_syncP3D { false };
297  std::atomic_bool m_syncFG { false };
298  std::atomic_bool m_syncXPlane { false };
299  std::atomic_bool m_syncMsfs { false };
300  std::atomic_bool m_syncMsfs2024 { false };
302  };
303 
307  {
308  Q_OBJECT
309 
310  public:
312  CModelCaches(bool synchronizeCache, QObject *parent = nullptr);
313 
315  static const QStringList &getLogCategories();
316 
319  CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const override;
320  CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
321  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const override;
322  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) override;
323  void synchronizeCache(const CSimulatorInfo &simulator) override;
324  void admitCache(const CSimulatorInfo &simulator) override;
325  QString getFilename(const CSimulatorInfo &simulator) const override;
326  bool isSaved(const CSimulatorInfo &simulator) const override;
327  QString getDescription() const override { return "Model caches"; }
329 
330  private:
331  CData<TModelCacheP3D> m_modelCacheP3D { this, &CModelCaches::changedP3D };
332  CData<TModelCacheXP> m_modelCacheXP { this, &CModelCaches::changedXP };
333  CData<TModelCacheFG> m_modelCacheFG { this, &CModelCaches::changedFG };
334  CData<TModelCacheMsfs> m_modelCacheMsfs { this, &CModelCaches::changedMsfs };
335  CData<TModelCacheMsfs2024> m_modelCacheMsfs2024 { this, &CModelCaches::changedMsfs2024 };
336 
338  void synchronizeCacheImpl(const CSimulatorInfo &simulator);
339 
342  bool admitCacheImpl(const CSimulatorInfo &simulator);
343  };
344 
348  {
349  Q_OBJECT
350 
351  public:
353  CModelSetCaches(bool synchronizeCache, QObject *parent = nullptr);
354 
356  static const QStringList &getLogCategories();
357 
360  CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const override;
361  CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
362  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const override;
363  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) override;
364  void synchronizeCache(const CSimulatorInfo &simulator) override;
365  void admitCache(const CSimulatorInfo &simulator) override;
366  QString getFilename(const CSimulatorInfo &simulator) const override;
367  bool isSaved(const CSimulatorInfo &simulator) const override;
368  QString getDescription() const override { return "Model sets"; }
370 
371  private:
372  CData<TModelSetCacheP3D> m_modelCacheP3D { this, &CModelSetCaches::changedP3D };
373  CData<TModelSetCacheXP> m_modelCacheXP { this, &CModelSetCaches::changedXP };
374  CData<TModelSetCacheFG> m_modelCacheFG { this, &CModelSetCaches::changedFG };
375  CData<TModelSetCacheMsfs> m_modelCacheMsfs { this, &CModelSetCaches::changedMsfs };
376  CData<TModelSetCacheMsfs2024> m_modelCacheMsfs2024 { this,
378 
380  void synchronizeCacheImpl(const CSimulatorInfo &simulator);
381 
384  bool admitCacheImpl(const CSimulatorInfo &simulator);
385  };
386 
388  template <class TCaches, class Derived>
390  {
391  public:
394 
396  CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const override
397  {
398  return instanceCaches().getCachedModels(simulator);
399  }
400 
402  CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
403  {
404  return instanceCaches().setCachedModels(models, simulator);
405  }
406 
408  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const override
409  {
410  return instanceCaches().getCacheTimestamp(simulator);
411  }
412 
414  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) override
415  {
416  return instanceCaches().setCacheTimestamp(ts, simulator);
417  }
418 
420  void synchronizeCache(const CSimulatorInfo &simulator) override
421  {
422  return instanceCaches().synchronizeCache(simulator);
423  }
424 
426  void admitCache(const CSimulatorInfo &simulator) override { return instanceCaches().admitCache(simulator); }
427 
429  QString getFilename(const CSimulatorInfo &simulator) const override
430  {
431  return instanceCaches().getFilename(simulator);
432  }
433 
435  bool isSaved(const CSimulatorInfo &simulator) const override { return instanceCaches().isSaved(simulator); }
436 
438  QString getDescription() const override { return instanceCaches().getDescription(); }
440 
441  protected:
445  {
446  this->setObjectName(name);
449  }
450 
451  private:
452  TCaches m_caches { false, this };
453 
455  TCaches &instanceCaches() { return this->isInstance() ? m_caches : Derived::modelCachesInstance().m_caches; }
456 
458  const TCaches &instanceCaches() const
459  {
460  return this->isInstance() ? m_caches : Derived::modelCachesInstance().m_caches;
461  }
462 
465  bool isInstance() const { return this == &Derived::modelCachesInstance(); }
466  };
467 
470  public CCentralMultiSimulatorModelCachesProviderBase<CModelCaches, CCentralMultiSimulatorModelCachesProvider>
471  {
472  Q_OBJECT
475 
476  public:
480  {
481  static CCentralMultiSimulatorModelCachesProvider c("Central model caches provider");
482  Q_ASSERT_X(CThreadUtils::isInThisThread(&c), Q_FUNC_INFO, "Wrong thread");
483  return c;
484  }
485 
486  protected:
490  {}
491  };
492 
497  {
498  public:
502  {
504  }
505  int getCachedModelsCount(const CSimulatorInfo &simulator) const
506  {
508  }
510  {
512  simulator);
513  }
515  {
517  }
519  {
521  }
523  {
525  }
527  {
529  }
530  void synchronizeCache(const CSimulatorInfo &simulator)
531  {
533  }
534  void admitCache(const CSimulatorInfo &simulator)
535  {
537  }
538  QString getFilename(const CSimulatorInfo &simulator) const
539  {
541  }
542  bool isSaved(const CSimulatorInfo &simulator) const
543  {
545  }
547  {
549  }
551  {
553  }
555  {
557  }
559 
561  void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
562  {
564  }
565 
567  int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
568  {
570  simulator);
571  }
572  };
573 
576  public CCentralMultiSimulatorModelCachesProviderBase<CModelSetCaches,
577  CCentralMultiSimulatorModelSetCachesProvider>
578  {
579  Q_OBJECT
582 
583  public:
587  {
588  static CCentralMultiSimulatorModelSetCachesProvider c("Central model sets provider");
589  Q_ASSERT_X(CThreadUtils::isInThisThread(&c), Q_FUNC_INFO, "Wrong thread");
590  return c;
591  }
592 
593  protected:
597  {}
598  };
599 
604  {
605  public:
609  {
611  }
612  int getCachedModelsCount(const CSimulatorInfo &simulator) const
613  {
615  }
617  {
619  simulator);
620  }
622  {
624  simulator);
625  }
627  {
629  }
631  {
633  }
635  {
637  }
638  void synchronizeCache(const CSimulatorInfo &simulator)
639  {
641  }
642  void admitCache(const CSimulatorInfo &simulator)
643  {
645  }
646  QString getFilename(const CSimulatorInfo &simulator) const
647  {
649  }
650  bool isSaved(const CSimulatorInfo &simulator) const
651  {
653  }
655  {
657  }
659  {
661  }
663  {
665  }
667 
669  void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
670  {
672  simulator);
673  }
674 
676  int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
677  {
679  models, simulator);
680  }
681  };
682 
683 } // namespace swift::misc::simulation::data
684 
685 #endif // SWIFT_MISC_SIMULATION_DATA_MODELCACHES
Description of a swift application.
Class template for accessing a specific value in the CDataCache.
Definition: datacache.h:315
Streamable status message, e.g.
static bool isInThisThread(const QObject *toBeTested)
Is the current thread the object's thread?
Definition: threadutils.cpp:16
Value object encapsulating a list of aircraft models.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
static const CSimulatorInfo & guessDefaultSimulator()
Guess a default simulator based on installation.
static const CSimulatorInfo & msfs()
Const simulator info objects.
static const CSimulatorInfo & p3d()
Const simulator info objects.
static const CSimulatorInfo & xplane()
Const simulator info objects.
static const CSimulatorInfo & msfs2024()
Const simulator info objects.
static const CSimulatorInfo & fg()
Const simulator info objects.
Interface to "something" backing models, which can be set.
Interface to "something" backing models, which can be modified (updated)
Basically a QObject free (delegate based) version of CCentralMultiSimulatorModelCachesProvider.
Definition: modelcaches.h:497
QString getInfoStringFsFamily() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:554
QString getDescription() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:546
void synchronizeCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:530
CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:514
void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:561
bool isSaved(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:542
QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:522
CStatusMessage clearCachedModels(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:518
QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:509
QString getInfoString() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:550
CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:526
int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:567
CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:501
void admitCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:534
QString getFilename(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:538
int getCachedModelsCount(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:505
QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
Cache timestamp.
Definition: modelcaches.h:408
void admitCache(const CSimulatorInfo &simulator)
Admit the cache for given simulator.
Definition: modelcaches.h:426
CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const
Models for simulator.
Definition: modelcaches.h:396
QString getFilename(const CSimulatorInfo &simulator) const
Get filename for simulator cache file.
Definition: modelcaches.h:429
void synchronizeCache(const CSimulatorInfo &simulator)
Synchronize for given simulator.
Definition: modelcaches.h:420
bool isSaved(const CSimulatorInfo &simulator) const
Cache saved?
Definition: modelcaches.h:435
CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
Set cache timestamp.
Definition: modelcaches.h:414
CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set cached models.
Definition: modelcaches.h:402
CCentralMultiSimulatorModelCachesProviderBase(const QString &name, QObject *parent=nullptr)
Ctor.
Definition: modelcaches.h:443
static CCentralMultiSimulatorModelCachesProvider & modelCachesInstance()
Central instance.
Definition: modelcaches.h:479
CCentralMultiSimulatorModelCachesProvider(const QString &name, QObject *parent=nullptr)
Ctor.
Definition: modelcaches.h:488
Basically a QObject free (delegate based) version of CCentralMultiSimulatorModelSetCachesProvider.
Definition: modelcaches.h:604
void admitCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:642
QString getDescription() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:654
QString getFilename(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:646
int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:676
void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:669
QString getInfoStringFsFamily() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:662
CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:608
CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:621
QString getInfoString() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:658
QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:616
QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:630
CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:634
bool isSaved(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:650
int getCachedModelsCount(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:612
CStatusMessage clearCachedModels(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:626
void synchronizeCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:638
CCentralMultiSimulatorModelSetCachesProvider(const QString &name, QObject *parent=nullptr)
Ctor.
Definition: modelcaches.h:595
static CCentralMultiSimulatorModelSetCachesProvider & modelCachesInstance()
Central instance.
Definition: modelcaches.h:586
Bundle of caches for all simulators.
Definition: modelcaches.h:307
QString getDescription() const
Descriptive text.
Definition: modelcaches.h:327
Bundle of caches for model sets of all simulators.
Definition: modelcaches.h:348
QString getDescription() const
Descriptive text.
Definition: modelcaches.h:368
Cache for multiple simulators specified by CSimulatorInfo.
Definition: modelcaches.h:161
IMultiSimulatorModelCaches(QObject *parent=nullptr)
Construtor.
Definition: modelcaches.h:275
QString getInfoString() const
Info string about models in cache.
Definition: modelcaches.cpp:33
void changedMsfs2024()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:283
virtual QString getDescription() const =0
Descriptive text.
virtual void synchronizeCache(const CSimulatorInfo &simulator)=0
Synchronize for given simulator.
int getCachedModelsCount(const CSimulatorInfo &simulator) const
Count of models for simulator.
Definition: modelcaches.cpp:80
virtual CStatusMessage clearCachedModels(const CSimulatorInfo &simulator)
Clear cached models.
void changedXP()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:280
virtual void admitCache(const CSimulatorInfo &simulator)=0
Admit the cache for given simulator.
void changedFG()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:281
virtual bool isSaved(const CSimulatorInfo &simulator) const =0
Cache saved?
virtual CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const =0
Models for simulator.
virtual CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)=0
Set cached models.
virtual QString getFilename(const CSimulatorInfo &simulator) const =0
Get filename for simulator cache file.
void changedMsfs()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:282
QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
Cache count and timestamp.
Definition: modelcaches.cpp:49
void cacheChanged(const swift::misc::simulation::CSimulatorInfo &simulator)
Cache has been changed.
void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.cpp:16
void changedP3D()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:279
virtual CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)=0
Set cache timestamp.
QString getInfoStringFsFamily() const
Info string without XPlane (FSX,P3D, FS9)
Definition: modelcaches.cpp:41
virtual QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const =0
Cache timestamp.
int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.cpp:22
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QObject * parent() const const
void setObjectName(QAnyStringView name)
Base class for traits to be used as template argument to swift::misc::CData.
Definition: datacache.h:459
static const char * key()
Key in data cache.
Definition: modelcaches.h:53
static constexpr bool isDeferred()
Defer loading.
Definition: modelcaches.h:29
static constexpr bool isPinned()
First load is synchronous.
Definition: modelcaches.h:74
static const CSimulatorInfo & defaultValue()
Default simulator.
Definition: modelcaches.h:77
static const char * key()
Key in data cache.
Definition: modelcaches.h:67
static const char * key()
Key in data cache.
Definition: modelcaches.h:60
static const char * key()
Key in data cache.
Definition: modelcaches.h:46
static const char * key()
Key in data cache.
Definition: modelcaches.h:39
static const char * key()
Key in data cache.
Definition: modelcaches.h:105
static const char * key()
Key in data cache.
Definition: modelcaches.h:119
static const char * key()
Key in data cache.
Definition: modelcaches.h:112
static const char * key()
Key in data cache.
Definition: modelcaches.h:98
static const char * key()
Key in data cache.
Definition: modelcaches.h:91
static constexpr bool isPinned()
First load is synchronous.
Definition: modelcaches.h:126
static const CSimulatorInfo & defaultValue()
Default simulator.
Definition: modelcaches.h:129
static const CSimulatorInfo & defaultValue()
Default simulator.
Definition: modelcaches.h:142
static constexpr bool isPinned()
First load is synchronous.
Definition: modelcaches.h:139
static const char * key()
Key in data cache.
Definition: modelcaches.h:153
#define SWIFT_MISC_EXPORT
Export a class or function from the library.