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 TModelCacheFsx : public TModelCache
44  {
46  static const char *key() { return "modelcachefsx"; }
47  };
48 
50  struct TModelCacheFs9 : public TModelCache
51  {
53  static const char *key() { return "modelcachefs9"; }
54  };
55 
57  struct TModelCacheP3D : public TModelCache
58  {
60  static const char *key() { return "modelcachep3d"; }
61  };
62 
64  struct TModelCacheFG : public TModelCache
65  {
67  static const char *key() { return "modelcachefg"; }
68  };
69 
71  struct TModelCacheMsfs : public TModelCache
72  {
74  static const char *key() { return "modelcachemsfs"; }
75  };
76 
79  {
81  static const char *key() { return "modelcachemsfs2024"; }
82  };
83 
85  struct TModelCacheLastSelection : public TDataTrait<CSimulatorInfo>
86  {
88  static constexpr bool isPinned() { return true; }
89 
92 
94  static const char *key() { return "modelcachelastselection"; }
95  };
97 
100 
103  {
105  static const char *key() { return "modelsetxp"; }
106  };
107 
110  {
112  static const char *key() { return "modelsetfsx"; }
113  };
114 
117  {
119  static const char *key() { return "modelsetfs9"; }
120  };
121 
124  {
126  static const char *key() { return "modelsetp3d"; }
127  };
128 
131  {
133  static const char *key() { return "modelsetfg"; }
134  };
135 
138  {
140  static const char *key() { return "modelsetmsfs"; }
141  };
142 
145  {
147  static const char *key() { return "modelsetmsfs2024"; }
148  };
149 
151  struct TSimulatorLastSelection : public TDataTrait<CSimulatorInfo>
152  {
154  static constexpr bool isPinned() { return true; }
155 
158 
160  static const char *key() { return "simulatorlastselection"; }
161  };
162 
164  struct TSimulatorLastSelections : public TDataTrait<CSimulatorInfo>
165  {
167  static constexpr bool isPinned() { return true; }
168 
171 
173  static const char *key() { return "simulatorlastselections"; }
174  };
176 
179  {
181  static const char *key() { return "vpilot/models"; }
182  };
183 
186  public QObject,
189  {
190  Q_OBJECT
193 
194  public:
196  void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
197 
199  int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
200 
203  virtual CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const = 0;
204 
206  CAircraftModelList getSynchronizedCachedModels(const CSimulatorInfo &simulator);
207 
209  int getCachedModelsCount(const CSimulatorInfo &simulator) const;
210 
212  virtual QString getFilename(const CSimulatorInfo &simulator) const = 0;
213 
215  bool hasOtherVersionFile(const swift::misc::CApplicationInfo &info, const CSimulatorInfo &simulator) const;
216 
218  CSimulatorInfo otherVersionSimulatorsWithFile(const swift::misc::CApplicationInfo &info) const;
219 
221  virtual QStringList getAllFilenames() const;
222 
224  CSimulatorInfo getSimulatorForFilename(const QString &filename) const;
225 
228  virtual QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const = 0;
229 
232  virtual CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) = 0;
233 
236  virtual bool isSaved(const CSimulatorInfo &simulator) const = 0;
237 
240  CSimulatorInfo simulatorsWithInitializedCache() const;
241 
244  CSimulatorInfo simulatorsWithModels() const;
245 
248  QDateTime getSynchronizedTimestamp(const CSimulatorInfo &simulator);
249 
252  virtual CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) = 0;
253 
256  virtual CStatusMessage clearCachedModels(const CSimulatorInfo &simulator);
257 
260  virtual void synchronizeCache(const CSimulatorInfo &simulator) = 0;
261 
264  bool isCacheAlreadySynchronized(const CSimulatorInfo &simulator) const;
265 
268  virtual void synchronizeMultiCaches(const CSimulatorInfo &simulator);
269 
272  virtual void admitCache(const CSimulatorInfo &simulator) = 0;
273 
276  virtual void admitMultiCaches(const CSimulatorInfo &simulator);
277 
280  QString getInfoString() const;
281 
284  QString getInfoStringFsFamily() const;
285 
288  QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const;
289 
291  virtual void gracefulShutdown();
292 
294  virtual QString getDescription() const = 0;
295 
296  signals:
300 
301  protected:
303  IMultiSimulatorModelCaches(QObject *parent = nullptr) : QObject(parent) {}
304 
307  void changedFsx() { this->emitCacheChanged(CSimulatorInfo::fsx()); }
308  void changedFs9() { this->emitCacheChanged(CSimulatorInfo::fs9()); }
309  void changedP3D() { this->emitCacheChanged(CSimulatorInfo::p3d()); }
310  void changedXP() { this->emitCacheChanged(CSimulatorInfo::xplane()); }
311  void changedFG() { this->emitCacheChanged(CSimulatorInfo::fg()); }
312  void changedMsfs() { this->emitCacheChanged(CSimulatorInfo::msfs()); }
313  void changedMsfs2024() { this->emitCacheChanged(CSimulatorInfo::msfs2024()); }
315 
318  void markCacheAsAlreadySynchronized(const CSimulatorInfo &simulator, bool synchronized);
319 
321  void emitCacheChanged(const CSimulatorInfo &simulator);
322 
323  private:
326  std::atomic_bool m_syncFsx { false };
327  std::atomic_bool m_syncP3D { false };
328  std::atomic_bool m_syncFS9 { false };
329  std::atomic_bool m_syncFG { false };
330  std::atomic_bool m_syncXPlane { false };
331  std::atomic_bool m_syncMsfs { false };
332  std::atomic_bool m_syncMsfs2024 { false };
334  };
335 
339  {
340  Q_OBJECT
341 
342  public:
344  CModelCaches(bool synchronizeCache, QObject *parent = nullptr);
345 
347  static const QStringList &getLogCategories();
348 
351  CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const override;
352  CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
353  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const override;
354  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) override;
355  void synchronizeCache(const CSimulatorInfo &simulator) override;
356  void admitCache(const CSimulatorInfo &simulator) override;
357  QString getFilename(const CSimulatorInfo &simulator) const override;
358  bool isSaved(const CSimulatorInfo &simulator) const override;
359  QString getDescription() const override { return "Model caches"; }
361 
362  private:
363  CData<TModelCacheFsx> m_modelCacheFsx { this, &CModelCaches::changedFsx };
364  CData<TModelCacheFs9> m_modelCacheFs9 { this, &CModelCaches::changedFs9 };
365  CData<TModelCacheP3D> m_modelCacheP3D { this, &CModelCaches::changedP3D };
366  CData<TModelCacheXP> m_modelCacheXP { this, &CModelCaches::changedXP };
367  CData<TModelCacheFG> m_modelCacheFG { this, &CModelCaches::changedFG };
368  CData<TModelCacheMsfs> m_modelCacheMsfs { this, &CModelCaches::changedMsfs };
369  CData<TModelCacheMsfs2024> m_modelCacheMsfs2024 { this, &CModelCaches::changedMsfs2024 };
370 
372  void synchronizeCacheImpl(const CSimulatorInfo &simulator);
373 
376  bool admitCacheImpl(const CSimulatorInfo &simulator);
377  };
378 
382  {
383  Q_OBJECT
384 
385  public:
387  CModelSetCaches(bool synchronizeCache, QObject *parent = nullptr);
388 
390  static const QStringList &getLogCategories();
391 
394  CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const override;
395  CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) override;
396  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const override;
397  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) override;
398  void synchronizeCache(const CSimulatorInfo &simulator) override;
399  void admitCache(const CSimulatorInfo &simulator) override;
400  QString getFilename(const CSimulatorInfo &simulator) const override;
401  bool isSaved(const CSimulatorInfo &simulator) const override;
402  QString getDescription() const override { return "Model sets"; }
404 
405  private:
406  CData<TModelSetCacheFsx> m_modelCacheFsx { this, &CModelSetCaches::changedFsx };
407  CData<TModelSetCacheFs9> m_modelCacheFs9 { this, &CModelSetCaches::changedFs9 };
408  CData<TModelSetCacheP3D> m_modelCacheP3D { this, &CModelSetCaches::changedP3D };
409  CData<TModelSetCacheXP> m_modelCacheXP { this, &CModelSetCaches::changedXP };
410  CData<TModelSetCacheFG> m_modelCacheFG { this, &CModelSetCaches::changedFG };
411  CData<TModelSetCacheMsfs> m_modelCacheMsfs { this, &CModelSetCaches::changedMsfs };
412  CData<TModelSetCacheMsfs2024> m_modelCacheMsfs2024 { this,
414 
416  void synchronizeCacheImpl(const CSimulatorInfo &simulator);
417 
420  bool admitCacheImpl(const CSimulatorInfo &simulator);
421  };
422 
424  template <class TCaches, class Derived>
426  {
427  public:
430 
432  CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const override
433  {
434  return instanceCaches().getCachedModels(simulator);
435  }
436 
438  CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
439  {
440  return instanceCaches().setCachedModels(models, simulator);
441  }
442 
444  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const override
445  {
446  return instanceCaches().getCacheTimestamp(simulator);
447  }
448 
450  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator) override
451  {
452  return instanceCaches().setCacheTimestamp(ts, simulator);
453  }
454 
456  void synchronizeCache(const CSimulatorInfo &simulator) override
457  {
458  return instanceCaches().synchronizeCache(simulator);
459  }
460 
462  void admitCache(const CSimulatorInfo &simulator) override { return instanceCaches().admitCache(simulator); }
463 
465  QString getFilename(const CSimulatorInfo &simulator) const override
466  {
467  return instanceCaches().getFilename(simulator);
468  }
469 
471  bool isSaved(const CSimulatorInfo &simulator) const override { return instanceCaches().isSaved(simulator); }
472 
474  QString getDescription() const override { return instanceCaches().getDescription(); }
476 
477  protected:
479  CCentralMultiSimulatorModelCachesProviderBase(const QString &name, QObject *parent = nullptr)
481  {
482  this->setObjectName(name);
483  connect(&m_caches, &IMultiSimulatorModelCaches::cacheChanged, this,
485  }
486 
487  private:
488  TCaches m_caches { false, this };
489 
491  TCaches &instanceCaches() { return this->isInstance() ? m_caches : Derived::modelCachesInstance().m_caches; }
492 
494  const TCaches &instanceCaches() const
495  {
496  return this->isInstance() ? m_caches : Derived::modelCachesInstance().m_caches;
497  }
498 
501  bool isInstance() const { return this == &Derived::modelCachesInstance(); }
502  };
503 
506  public CCentralMultiSimulatorModelCachesProviderBase<CModelCaches, CCentralMultiSimulatorModelCachesProvider>
507  {
508  Q_OBJECT
511 
512  public:
516  {
517  static CCentralMultiSimulatorModelCachesProvider c("Central model caches provider");
518  Q_ASSERT_X(CThreadUtils::isInThisThread(&c), Q_FUNC_INFO, "Wrong thread");
519  return c;
520  }
521 
522  protected:
524  CCentralMultiSimulatorModelCachesProvider(const QString &name, QObject *parent = nullptr)
526  {}
527  };
528 
533  {
534  public:
538  {
540  }
541  int getCachedModelsCount(const CSimulatorInfo &simulator) const
542  {
544  }
545  QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
546  {
548  simulator);
549  }
551  {
553  }
555  {
557  }
558  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
559  {
561  }
562  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
563  {
565  }
566  void synchronizeCache(const CSimulatorInfo &simulator)
567  {
569  }
570  void admitCache(const CSimulatorInfo &simulator)
571  {
573  }
574  QString getFilename(const CSimulatorInfo &simulator) const
575  {
577  }
578  bool isSaved(const CSimulatorInfo &simulator) const
579  {
581  }
582  QString getDescription() const
583  {
585  }
586  QString getInfoString() const
587  {
589  }
590  QString getInfoStringFsFamily() const
591  {
593  }
595 
597  void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
598  {
600  }
601 
603  int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
604  {
606  simulator);
607  }
608  };
609 
612  public CCentralMultiSimulatorModelCachesProviderBase<CModelSetCaches,
613  CCentralMultiSimulatorModelSetCachesProvider>
614  {
615  Q_OBJECT
618 
619  public:
623  {
624  static CCentralMultiSimulatorModelSetCachesProvider c("Central model sets provider");
625  Q_ASSERT_X(CThreadUtils::isInThisThread(&c), Q_FUNC_INFO, "Wrong thread");
626  return c;
627  }
628 
629  protected:
631  CCentralMultiSimulatorModelSetCachesProvider(const QString &name, QObject *parent = nullptr)
633  {}
634  };
635 
640  {
641  public:
645  {
647  }
648  int getCachedModelsCount(const CSimulatorInfo &simulator) const
649  {
651  }
652  QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
653  {
655  simulator);
656  }
658  {
660  simulator);
661  }
663  {
665  }
666  QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
667  {
669  }
670  CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
671  {
673  }
674  void synchronizeCache(const CSimulatorInfo &simulator)
675  {
677  }
678  void admitCache(const CSimulatorInfo &simulator)
679  {
681  }
682  QString getFilename(const CSimulatorInfo &simulator) const
683  {
685  }
686  bool isSaved(const CSimulatorInfo &simulator) const
687  {
689  }
690  QString getDescription() const
691  {
693  }
694  QString getInfoString() const
695  {
697  }
698  QString getInfoStringFsFamily() const
699  {
701  }
703 
705  void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
706  {
708  simulator);
709  }
710 
712  int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator) override
713  {
715  models, simulator);
716  }
717  };
718 
719 } // namespace swift::misc::simulation::data
720 
721 #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 & fs9()
Const simulator info objects.
static const CSimulatorInfo & fsx()
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:533
QString getInfoStringFsFamily() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:590
QString getDescription() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:582
void synchronizeCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:566
CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:550
void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:597
bool isSaved(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:578
QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:558
CStatusMessage clearCachedModels(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:554
QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:545
QString getInfoString() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:586
CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:562
int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:603
CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:537
void admitCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:570
QString getFilename(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:574
int getCachedModelsCount(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:541
QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
Cache timestamp.
Definition: modelcaches.h:444
void admitCache(const CSimulatorInfo &simulator)
Admit the cache for given simulator.
Definition: modelcaches.h:462
CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const
Models for simulator.
Definition: modelcaches.h:432
QString getFilename(const CSimulatorInfo &simulator) const
Get filename for simulator cache file.
Definition: modelcaches.h:465
void synchronizeCache(const CSimulatorInfo &simulator)
Synchronize for given simulator.
Definition: modelcaches.h:456
bool isSaved(const CSimulatorInfo &simulator) const
Cache saved?
Definition: modelcaches.h:471
CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
Set cache timestamp.
Definition: modelcaches.h:450
CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set cached models.
Definition: modelcaches.h:438
CCentralMultiSimulatorModelCachesProviderBase(const QString &name, QObject *parent=nullptr)
Ctor.
Definition: modelcaches.h:479
static CCentralMultiSimulatorModelCachesProvider & modelCachesInstance()
Central instance.
Definition: modelcaches.h:515
CCentralMultiSimulatorModelCachesProvider(const QString &name, QObject *parent=nullptr)
Ctor.
Definition: modelcaches.h:524
Basically a QObject free (delegate based) version of CCentralMultiSimulatorModelSetCachesProvider.
Definition: modelcaches.h:640
void admitCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:678
QString getDescription() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:690
QString getFilename(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:682
int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:712
void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.h:705
QString getInfoStringFsFamily() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:698
CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:644
CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:657
QString getInfoString() const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:694
QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:652
QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:666
CStatusMessage setCacheTimestamp(const QDateTime &ts, const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:670
bool isSaved(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:686
int getCachedModelsCount(const CSimulatorInfo &simulator) const
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:648
CStatusMessage clearCachedModels(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:662
void synchronizeCache(const CSimulatorInfo &simulator)
Look like IMultiSimulatorModelCaches interface.
Definition: modelcaches.h:674
CCentralMultiSimulatorModelSetCachesProvider(const QString &name, QObject *parent=nullptr)
Ctor.
Definition: modelcaches.h:631
static CCentralMultiSimulatorModelSetCachesProvider & modelCachesInstance()
Central instance.
Definition: modelcaches.h:622
Bundle of caches for all simulators.
Definition: modelcaches.h:339
QString getDescription() const
Descriptive text.
Definition: modelcaches.h:359
Bundle of caches for model sets of all simulators.
Definition: modelcaches.h:382
QString getDescription() const
Descriptive text.
Definition: modelcaches.h:402
Cache for multiple simulators specified by CSimulatorInfo.
Definition: modelcaches.h:189
IMultiSimulatorModelCaches(QObject *parent=nullptr)
Construtor.
Definition: modelcaches.h:303
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:313
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:86
void changedFsx()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:307
virtual CStatusMessage clearCachedModels(const CSimulatorInfo &simulator)
Clear cached models.
void changedFs9()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:308
void changedXP()
Cache has been changed. This will only detect changes elsewhere, owned caches will not signal local c...
Definition: modelcaches.h:310
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:311
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:312
QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const
Cache count and timestamp.
Definition: modelcaches.cpp:53
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:309
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:43
virtual QDateTime getCacheTimestamp(const CSimulatorInfo &simulator) const =0
Cache timestamp.
int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)
Set models.
Definition: modelcaches.cpp:22
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:67
static const char * key()
Key in data cache.
Definition: modelcaches.h:53
static const char * key()
Key in data cache.
Definition: modelcaches.h:46
static constexpr bool isDeferred()
Defer loading.
Definition: modelcaches.h:29
static constexpr bool isPinned()
First load is synchronous.
Definition: modelcaches.h:88
static const CSimulatorInfo & defaultValue()
Default simulator.
Definition: modelcaches.h:91
static const char * key()
Key in data cache.
Definition: modelcaches.h:81
static const char * key()
Key in data cache.
Definition: modelcaches.h:74
static const char * key()
Key in data cache.
Definition: modelcaches.h:60
static const char * key()
Key in data cache.
Definition: modelcaches.h:39
static const char * key()
Key in data cache.
Definition: modelcaches.h:133
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:147
static const char * key()
Key in data cache.
Definition: modelcaches.h:140
static const char * key()
Key in data cache.
Definition: modelcaches.h:126
static const char * key()
Key in data cache.
Definition: modelcaches.h:105
static constexpr bool isPinned()
First load is synchronous.
Definition: modelcaches.h:154
static const CSimulatorInfo & defaultValue()
Default simulator.
Definition: modelcaches.h:157
static const CSimulatorInfo & defaultValue()
Default simulator.
Definition: modelcaches.h:170
static constexpr bool isPinned()
First load is synchronous.
Definition: modelcaches.h:167
static const char * key()
Key in data cache.
Definition: modelcaches.h:181
#define SWIFT_MISC_EXPORT
Export a class or function from the library.