swift
Public Types | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
swift::misc::simulation::IAircraftModelLoader Class Referenceabstract

Load the aircraft for a simulator. More...

Inheritance diagram for swift::misc::simulation::IAircraftModelLoader:
[legend]

Public Types

enum  LoadModeFlag {
  NotSet = 0 , LoadDirectly = 1 << 0 , LoadInBackground = 1 << 1 , CacheFirst = 1 << 2 ,
  CacheSkipped = 1 << 3 , CacheOnly = 1 << 4 , InBackgroundWithCache = LoadInBackground | CacheFirst , InBackgroundNoCache = LoadInBackground | CacheSkipped
}
 Parser mode. More...
 
enum  LoadFinishedInfo { CacheLoaded , ParsedData , LoadingSkipped , LoadingFailed }
 Load mode. More...
 
using ModelConsolidationCallback = std::function< int(swift::misc::simulation::CAircraftModelList &, bool)>
 Callback to consolidate data, normally with DB data. More...
 

Signals

void diskLoadingStarted (const CSimulatorInfo &simulator, IAircraftModelLoader::LoadMode loadMode)
 Disk loading started. More...
 
void loadingFinished (const CStatusMessageList &status, const CSimulatorInfo &simulator, IAircraftModelLoader::LoadFinishedInfo info)
 Parsing is finished or cache has been loaded. More...
 
void loadingProgress (const CSimulatorInfo &simulator, const QString &message, int progressPercentage)
 Loading progress, normally from disk. More...
 
void cacheChanged (const CSimulatorInfo &simulator)
 Relayed from centralized caches. More...
 

Public Member Functions

virtual ~IAircraftModelLoader ()
 Destructor.
 
virtual bool isLoadingFinished () const =0
 Loading finished?
 
void startLoading (LoadMode mode=InBackgroundWithCache, const ModelConsolidationCallback &modelConsolidation={}, const QStringList &modelDirectories={})
 Start the loading process from disk. Optional DB models can be passed and used for data consolidation.
 
bool isLoadingInProgress () const
 Loading in progress. More...
 
QStringList getModelDirectoriesOrDefault () const
 Model directories.
 
QString getFirstModelDirectoryOrDefault () const
 First directory, can be used when only 1 directory is expected.
 
QStringList getModelExcludeDirectoryPatterns () const
 Exclude directories.
 
const CSimulatorInfogetSimulator () const
 Simulator.
 
bool supportsSimulator (const CSimulatorInfo &simulator) const
 Supported simulator.
 
virtual void setModels (const CAircraftModelList &models)
 Set models.
 
virtual int updateModels (const CAircraftModelList &models)
 Update models.
 
- Public Member Functions inherited from swift::misc::simulation::data::CCentralMultiSimulatorModelCachesAware
void setModelsForSimulator (const CAircraftModelList &models, const CSimulatorInfo &simulator)
 Set models. More...
 
int updateModelsForSimulator (const CAircraftModelList &models, const CSimulatorInfo &simulator)
 Set models. More...
 
CAircraftModelList getCachedModels (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
int getCachedModelsCount (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
QString getCacheCountAndTimestamp (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
CStatusMessage setCachedModels (const CAircraftModelList &models, const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
CStatusMessage clearCachedModels (const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
QDateTime getCacheTimestamp (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
CStatusMessage setCacheTimestamp (const QDateTime &ts, const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
void synchronizeCache (const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
void admitCache (const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
QString getFilename (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
bool isSaved (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
QString getDescription () const
 Look like IMultiSimulatorModelCaches interface.
 
QString getInfoString () const
 Look like IMultiSimulatorModelCaches interface.
 
QString getInfoStringFsFamily () const
 Look like IMultiSimulatorModelCaches interface.
 
- Public Member Functions inherited from swift::misc::simulation::IModelsForSimulatorSetable
 IModelsForSimulatorSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsForSimulatorSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsForSimulatorSetable (const IModelsForSimulatorSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsForSimulatorSetableoperator= (const IModelsForSimulatorSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
- Public Member Functions inherited from swift::misc::simulation::IModelsForSimulatorUpdatable
 IModelsForSimulatorUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsForSimulatorUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsForSimulatorUpdatable (const IModelsForSimulatorUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsForSimulatorUpdatableoperator= (const IModelsForSimulatorUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
- Public Member Functions inherited from swift::misc::simulation::IModelsSetable
 IModelsSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsSetable (const IModelsSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsSetableoperator= (const IModelsSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
- Public Member Functions inherited from swift::misc::simulation::IModelsUpdatable
 IModelsUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsUpdatable (const IModelsUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsUpdatableoperator= (const IModelsUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 

Static Public Member Functions

static const QStringList & getLogCategories ()
 Log categories.
 
static bool isLoadedInfo (LoadFinishedInfo info)
 Loaded info.
 
static const QString & enumToString (LoadFinishedInfo info)
 Enum as string.
 
static const QString & enumToString (LoadModeFlag modeFlag)
 Enum as string.
 
static QString enumToString (LoadMode mode)
 Enum as string.
 
static bool needsCacheSynchronized (LoadMode mode)
 Is that mode needing caches synchronized?
 

Protected Member Functions

 IAircraftModelLoader (const CSimulatorInfo &simulator, QObject *parent=nullptr)
 Constructor.
 
virtual void startLoadingFromDisk (LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)=0
 Start the loading process from disk.
 
QStringList getInitializedModelDirectories (const QStringList &modelDirectories, const CSimulatorInfo &simulator) const
 Get model directories from settings if empty, otherwise checked and UNC path fixed.
 
bool hasCachedData () const
 Any cached data?
 

Protected Attributes

const CSimulatorInfo m_simulator
 related simulator
 
std::atomic< bool > m_loadingInProgress { false }
 loading in progress
 
std::atomic< bool > m_cancelLoading { false }
 flag, requesting to cancel loading
 
std::atomic< bool > m_skipLoadingEmptyModelDir
 loading empty model dirs might erase the cache, so normally we skip it More...
 
CStatusMessageList m_loadingMessages
 loading messages
 
settings::CMultiSimulatorSettings m_settings { this }
 settings
 

Detailed Description

Load the aircraft for a simulator.

Remarks
all model loaders share the same model caches of Data::CCentralMultiSimulatorModelCachesProvider

Definition at line 34 of file aircraftmodelloader.h.

Member Typedef Documentation

◆ ModelConsolidationCallback

Callback to consolidate data, normally with DB data.

Remarks
this has to be a abstarct, as DB handling is subject of swift::core

Definition at line 90 of file aircraftmodelloader.h.

Member Enumeration Documentation

◆ LoadFinishedInfo

Load mode.

Enumerator
CacheLoaded 

cache was loaded

ParsedData 

parsed data

LoadingSkipped 

loading skipped (empty directory)

LoadingFailed 

loading failed

Definition at line 65 of file aircraftmodelloader.h.

◆ LoadModeFlag

Parser mode.

Enumerator
LoadDirectly 

load synchronously (blocking), normally for testing

LoadInBackground 

load in background, asyncronously

CacheFirst 

always use cache (if it has data)

CacheSkipped 

ignore cache

CacheOnly 

only read cache, never load from disk

InBackgroundWithCache 

Background, cached.

InBackgroundNoCache 

Background, not checking cache.

Definition at line 51 of file aircraftmodelloader.h.

Member Function Documentation

◆ cacheChanged

void swift::misc::simulation::IAircraftModelLoader::cacheChanged ( const CSimulatorInfo simulator)
signal

Relayed from centralized caches.

Remarks
this can result from loading, the cache changed elsewhere or clearing data

◆ diskLoadingStarted

void swift::misc::simulation::IAircraftModelLoader::diskLoadingStarted ( const CSimulatorInfo simulator,
IAircraftModelLoader::LoadMode  loadMode 
)
signal

Disk loading started.

Remarks
will only indicate loading from disk, not cache loading

◆ isLoadingInProgress()

bool swift::misc::simulation::IAircraftModelLoader::isLoadingInProgress ( ) const
inline

Loading in progress.

Remarks
This function is thread safe.

Definition at line 106 of file aircraftmodelloader.h.

◆ loadingFinished

void swift::misc::simulation::IAircraftModelLoader::loadingFinished ( const CStatusMessageList status,
const CSimulatorInfo simulator,
IAircraftModelLoader::LoadFinishedInfo  info 
)
signal

Parsing is finished or cache has been loaded.

Remarks
does to fire if the cache has been changed elsewhere and it has just been reloaded here!

◆ loadingProgress

void swift::misc::simulation::IAircraftModelLoader::loadingProgress ( const CSimulatorInfo simulator,
const QString &  message,
int  progressPercentage 
)
signal

Loading progress, normally from disk.

Parameters
simulatorcorresponding simulator
messagea progress message which can be sent by each individual loader implementation as needed
progressPercentage0-100 or -1 if not available

Member Data Documentation

◆ m_skipLoadingEmptyModelDir

std::atomic<bool> swift::misc::simulation::IAircraftModelLoader::m_skipLoadingEmptyModelDir
protected
Initial value:
{
true
}

loading empty model dirs might erase the cache, so normally we skip it

Definition at line 165 of file aircraftmodelloader.h.


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