swift
Public Types | Signals | Public Member Functions | List of all members
swift::core::CAirspaceAnalyzer Class Reference

Class monitoring and analyzing (closest aircraft, outdated aircraft / watchdog) airspace in background. More...

Inheritance diagram for swift::core::CAirspaceAnalyzer:
[legend]

Public Types

using CCallsignTimestampSet = QHash< swift::misc::aviation::CCallsign, qint64 >
 List of callsigns and their last activity.
 

Signals

void timeoutAircraft (const swift::misc::aviation::CCallsign &callsign)
 Callsign has timed out.
 
void timeoutAtc (const swift::misc::aviation::CCallsign &callsign)
 Callsign has timed out.
 
void airspaceAircraftSnapshot (const swift::misc::simulation::CAirspaceAircraftSnapshot &snapshot)
 New aircraft snapshot.
 
- Signals inherited from swift::misc::CWorkerBase
void aboutToStart ()
 Emitted when the task is about to start.
 
void finished ()
 Emitted when the task is finished. More...
 

Public Member Functions

 CAirspaceAnalyzer (swift::misc::simulation::IOwnAircraftProvider *ownAircraftProvider, fsd::CFSDClient *fsdClient, CAirspaceMonitor *airspaceMonitorParent)
 Constructor.
 
virtual ~CAirspaceAnalyzer ()
 Destructor.
 
swift::misc::simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot () const
 Get the latest snapshot. More...
 
void setSimulatorRenderRestrictionsChanged (bool restricted, bool enabled, int maxAircraft, const swift::misc::physical_quantities::CLength &maxRenderedDistance)
 Render restrictions in simulator.
 
void setEnabledWatchdog (bool enabled)
 Enable/disable watchdog. More...
 
void clear ()
 Clear.
 
- Public Member Functions inherited from swift::misc::CContinuousWorker
 CContinuousWorker (QObject *owner, const QString &name)
 Constructor. More...
 
void start (QThread::Priority priority=QThread::InheritPriority)
 Starts a thread and moves the worker into it.
 
void quit () noexcept final
 Stops the thread the next time around its event loop. The thread and the worker will then be deleted. More...
 
void quitAndWait () noexcept final
 Calls quit() and blocks until the thread is finished. More...
 
bool isEnabled () const
 Enabled (running)? More...
 
void setEnabled (bool enabled)
 Enabled (running)? More...
 
void startUpdating (int updateTimeSecs)
 Start updating (start/stop timer) More...
 
const QString & getName ()
 Name of the worker.
 
const QObject * owner () const
 Owner of the worker.
 
- Public Member Functions inherited from swift::misc::CWorkerBase
template<typename T , typename F >
void then (T *context, F functor)
 Connects to a functor or method which will be called when the task is finished. More...
 
template<typename F >
void then (F functor)
 Connects to a functor which will be called when the task is finished. More...
 
bool isFinished () const
 Returns true if the task has finished. More...
 
template<typename F >
void doIfFinished (F functor) const
 Executes some code (in the caller's thread) if the task has finished. More...
 
template<typename F >
void doIfNotFinished (F functor) const
 Executes some code (in the caller's thread) if the task has not finished. More...
 
template<typename F1 , typename F2 >
void doIfFinishedElse (F1 ifFunctor, F2 elseFunctor) const
 Executes some code (in the caller's thread) if the task has finished and some different code if it has not finished. More...
 
void waitForFinished () noexcept
 Blocks until the task is finished. More...
 
void abandon () noexcept
 Notify the task that its result is no longer needed, so it can finish early. More...
 
void abandonAndWait () noexcept
 Convenience to call abandon() followed by waitForFinished().
 
- Public Member Functions inherited from swift::misc::simulation::COwnAircraftAware
void setOwnAircraftProvider (IOwnAircraftProvider *provider)
 Set the provider.
 
CSimulatedAircraft getOwnAircraft () const
 Own aircraft. More...
 
aviation::CCallsign getOwnCallsign () const
 Own aircraft's callsign. More...
 
aviation::CComSystem getOwnComSystem (aviation::CComSystem::ComUnit unit) const
 Own aircraft COM unit. More...
 
aviation::CTransponder getOwnTransponder () const
 Own aircraft XPDR. More...
 
swift::misc::geo::CCoordinateGeodetic getOwnAircraftPosition () const
 Own aircraft's position. More...
 
aviation::CAircraftSituation getOwnAircraftSituation () const
 Own aircraft's position. More...
 
aviation::CAircraftParts getOwnAircraftParts () const
 Own aircraft's parts. More...
 
swift::misc::simulation::CAircraftModel getOwnAircraftModel () const
 Own aircraft model. More...
 
swift::misc::physical_quantities::CLength getDistanceToOwnAircraft (const swift::misc::geo::ICoordinateGeodetic &position) const
 Distance to own aircraft. More...
 
bool updateCockpit (const swift::misc::simulation::CSimulatedAircraft &aircraft, const swift::misc::CIdentifier &originator)
 
bool updateCockpit (const aviation::CComSystem &com1, const aviation::CComSystem &com2, const aviation::CTransponder &transponder, const swift::misc::CIdentifier &originator)
 
bool updateActiveComFrequency (const swift::misc::physical_quantities::CFrequency &frequency, aviation::CComSystem::ComUnit comUnit, const swift::misc::CIdentifier &originator)
 Update cockpit, but only send signals when applicable. More...
 
bool updateSelcal (const aviation::CSelcal &selcal, const swift::misc::CIdentifier &originator)
 Update cockpit, but only send signals when applicable. More...
 
bool updateOwnCallsign (const aviation::CCallsign &callsign)
 Update aircraft's callsign. More...
 
bool updateOwnIcaoCodes (const aviation::CAircraftIcaoCode &aircraftIcaoData, const aviation::CAirlineIcaoCode &airlineIcaoCode)
 Update ICAO data. More...
 
bool updateOwnModel (const swift::misc::simulation::CAircraftModel &model)
 Update model. More...
 
bool updateOwnSituation (const aviation::CAircraftSituation &situation)
 Update own situation. More...
 
bool updateOwnParts (const aviation::CAircraftParts &parts)
 Update own parts. More...
 
bool updateOwnCG (const physical_quantities::CLength &cg)
 Update own aircraft's CG (aka vertical offset) More...
 
- Public Member Functions inherited from swift::misc::simulation::CRemoteAircraftAware
virtual ~CRemoteAircraftAware ()
 Destructor.
 
CSimulatedAircraftList getAircraftInRange () const
 All remote aircraft. More...
 
bool isAircraftInRange (const aviation::CCallsign &callsign) const
 Is aircraft in range? More...
 
bool isVtolAircraft (const aviation::CCallsign &callsign) const
 Is VTOL aircraft? More...
 
int getAircraftInRangeCount () const
 Count remote aircraft. More...
 
aviation::CCallsignSet getAircraftInRangeCallsigns () const
 Unique callsigns for aircraft in range. More...
 
CSimulatedAircraft getAircraftInRangeForCallsign (const aviation::CCallsign &callsign) const
 Aircraft for callsign. More...
 
CAircraftModel getAircraftInRangeModelForCallsign (const aviation::CCallsign &callsign) const
 Aircraft model for callsign. More...
 
CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot () const
 Current snapshot. More...
 
aviation::CAircraftSituationList remoteAircraftSituations (const aviation::CCallsign &callsign) const
 Rendered aircraft situations (per callsign, time history) More...
 
aviation::CAircraftSituation remoteAircraftSituation (const aviation::CCallsign &callsign, int index) const
 Rendered aircraft situations (per callsign and index) More...
 
aviation::CAircraftSituationList latestRemoteAircraftSituations () const
 Latest aircraft situation for all callsigns. More...
 
aviation::CAircraftSituationList latestOnGroundProviderElevations () const
 Latest aircraft situation "on ground" having a provider elevation. More...
 
int remoteAircraftSituationsCount (const aviation::CCallsign &callsign) const
 Number of remote aircraft situations for callsign. More...
 
aviation::CAircraftPartsList remoteAircraftParts (const aviation::CCallsign &callsign) const
 All parts (per callsign, time history) More...
 
int remoteAircraftPartsCount (const aviation::CCallsign &callsign) const
 All parts (per callsign, time history) More...
 
aviation::CAircraftSituationChangeList remoteAircraftSituationChanges (const aviation::CCallsign &callsign) const
 Aircraft changes. More...
 
aviation::CCallsignSet remoteAircraftSupportingParts () const
 Remote aircraft supporting parts. More...
 
bool isRemoteAircraftSupportingParts (const aviation::CCallsign &callsign) const
 Is remote aircraft supporting parts? More...
 
int getRemoteAircraftSupportingPartsCount () const
 Number of aircraft supporting parts. More...
 
bool updateAircraftEnabled (const aviation::CCallsign &callsign, bool enabledForRendering)
 Enable/disable aircraft and follow up logic like sending signals. More...
 
bool setAircraftEnabledFlag (const aviation::CCallsign &callsign, bool enabledForRendering)
 Just set enable/disable aircraft flag, no further logic. More...
 
bool updateMultipleAircraftEnabled (const aviation::CCallsignSet &callsigns, bool enabledForRendering)
 Enable/disable aircraft. More...
 
bool updateAircraftModel (const aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)
 Change model. More...
 
bool updateAircraftNetworkModel (const aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)
 Change network model. More...
 
bool updateAircraftRendered (const aviation::CCallsign &callsign, bool rendered)
 Set aircraft rendered. More...
 
bool updateMultipleAircraftRendered (const aviation::CCallsignSet &callsigns, bool rendered)
 Set aircraft rendered. More...
 
int updateAircraftGroundElevation (const aviation::CCallsign &callsign, const geo::CElevationPlane &elevation, aviation::CAircraftSituation::GndElevationInfo info, bool *updateAircraftGroundElevation)
 Update the ground elevation. More...
 
bool updateCG (const aviation::CCallsign &callsign, const physical_quantities::CLength &cg)
 Update the CG. More...
 
aviation::CCallsignSet updateCGForModel (const QString &modelString, const physical_quantities::CLength &cg)
 Update the CG for this model string. More...
 
bool updateCGAndModelString (const aviation::CCallsign &callsign, const physical_quantities::CLength &cg, const QString &modelString)
 Update the CG and model string. More...
 
void updateMarkAllAsNotRendered ()
 Mark all as not rendered. More...
 
int aircraftSituationsAdded () const
 Number of situations added. More...
 
int aircraftPartsAdded () const
 Number of parts added. More...
 
qint64 situationsLastModified (const aviation::CCallsign &callsign) const
 When last modified. More...
 
qint64 partsLastModified (const aviation::CCallsign &callsign) const
 When last modified. More...
 
geo::CElevationPlane averageElevationOfNonMovingAircraft (const aviation::CAircraftSituation &reference, const physical_quantities::CLength &range, int minValues=1) const
 Average elevation of aircraft in given range, which are NOT moving. More...
 
void setRemoteAircraftProvider (IRemoteAircraftProvider *remoteAircraftProvider)
 Set remote aircraft provider.
 
IRemoteAircraftProvidergetRemoteAircraftProvider () const
 Get the aircraft provider.
 

Additional Inherited Members

- Static Public Member Functions inherited from swift::misc::CWorkerBase
static const QStringList & getLogCategories ()
 Log categories.
 
static const QSet< CWorkerBase * > & allWorkers ()
 All workers currently existing.
 
- Protected Member Functions inherited from swift::misc::CContinuousWorker
virtual void initialize ()
 Called when the thread is started.
 
virtual void cleanup ()
 Called when the thread is finished.
 
virtual void beforeQuit () noexcept
 Called before quit is called. More...
 
virtual unsigned long waitTimeoutMs () const
 Wait time for quitAndWait, 0 means not waiting.
 
void stopUpdateTimer ()
 Safely stop update time.
 
- Protected Member Functions inherited from swift::misc::CWorkerBase
 CWorkerBase ()
 Constructor.
 
 ~CWorkerBase ()
 Destructor.
 
bool isAbandoned () const
 For the task to check whether it can finish early. More...
 
bool hasStarted () const
 True if the worker has started.
 
void setStarted ()
 Mark the task as started.
 
void setFinished ()
 Mark the task as finished.
 
- Protected Member Functions inherited from swift::misc::simulation::COwnAircraftAware
 COwnAircraftAware (IOwnAircraftProvider *ownAircraftProvider)
 Constructor.
 
- Protected Member Functions inherited from swift::misc::IProviderAware< IOwnAircraftProvider >
 IProviderAware (IOwnAircraftProvider *provider=nullptr)
 Ctor.
 
virtual ~IProviderAware ()
 Dtor.
 
bool hasProvider () const
 Has provider?
 
IOwnAircraftProvider * getProvider () const
 Provider.
 
void setProvider (IOwnAircraftProvider *provider)
 Set the provider. More...
 
IOwnAircraftProvider * provider ()
 Provider.
 
const IOwnAircraftProvider * provider () const
 Const provider.
 
- Protected Member Functions inherited from swift::misc::simulation::CRemoteAircraftAware
 CRemoteAircraftAware ()
 Default constructor.
 
 CRemoteAircraftAware (IRemoteAircraftProvider *remoteAircraftProvider)
 Constructor.
 
- Protected Member Functions inherited from swift::misc::IProviderAware< IRemoteAircraftProvider >
 IProviderAware (IRemoteAircraftProvider *provider=nullptr)
 Ctor.
 
virtual ~IProviderAware ()
 Dtor.
 
bool hasProvider () const
 Has provider?
 
IRemoteAircraftProvider * getProvider () const
 Provider.
 
void setProvider (IRemoteAircraftProvider *provider)
 Set the provider. More...
 
IRemoteAircraftProvider * provider ()
 Provider.
 
const IRemoteAircraftProvider * provider () const
 Const provider.
 
- Protected Attributes inherited from swift::misc::CContinuousWorker
QTimer m_updateTimer { this }
 timer which can be used by implementing classes
 

Detailed Description

Class monitoring and analyzing (closest aircraft, outdated aircraft / watchdog) airspace in background.

Watchdog functionality: This class was introduced due to a flaw in the VATSIM server implementation: Every client needs to send an add/delete packet on its own to inform other clients nearby. The server does not take care of that. When a client crashes, no delete packet is ever sent. This class therefore monitors callsigns and emits a timeout signal if it wasn't resetted during the specified timeout value.

Definition at line 49 of file airspaceanalyzer.h.

Member Function Documentation

◆ getLatestAirspaceAircraftSnapshot()

CAirspaceAircraftSnapshot swift::core::CAirspaceAnalyzer::getLatestAirspaceAircraftSnapshot ( ) const

Get the latest snapshot.

Remarks
This function is thread safe.

Definition at line 84 of file airspaceanalyzer.cpp.

◆ setEnabledWatchdog()

void swift::core::CAirspaceAnalyzer::setEnabledWatchdog ( bool  enabled)
inline

Enable/disable watchdog.

Remarks
primarily for debugging, where stopping at a breakpoint can cause multiple timeouts

Definition at line 78 of file airspaceanalyzer.h.


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