swift
contextnetwork.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_CORE_CONTEXT_CONTEXTNETWORK_H
7 #define SWIFT_CORE_CONTEXT_CONTEXTNETWORK_H
8 
9 #include <functional>
10 
11 #include <QCommandLineOption>
12 #include <QObject>
13 #include <QString>
14 
15 #include "core/context/context.h"
16 #include "core/corefacade.h"
17 #include "core/corefacadeconfig.h"
18 #include "core/swiftcoreexport.h"
26 #include "misc/identifiable.h"
27 #include "misc/identifier.h"
30 #include "misc/network/loginmode.h"
31 #include "misc/network/server.h"
34 #include "misc/network/user.h"
35 #include "misc/network/userlist.h"
38 #include "misc/statusmessage.h"
39 #include "misc/weather/metar.h"
40 
41 // clazy:excludeall=const-signal-or-slot
42 
45 #define SWIFT_CORE_CONTEXTNETWORK_INTERFACENAME "org.swift_project.swift_core.contextnetwork"
46 
49 #define SWIFT_CORE_CONTEXTNETWORK_OBJECTPATH "/network"
50 
51 class QDBusConnection;
52 namespace swift::misc
53 {
54  class CDBusServer;
55  namespace aviation
56  {
57  class CAircraftParts;
58  class CCallsign;
59  } // namespace aviation
60  namespace network
61  {
62  class CRawFsdMessage;
63  class CTextMessage;
64  } // namespace network
65  namespace simulation
66  {
67  class CAircraftModel;
68  }
69 } // namespace swift::misc
70 namespace swift::core::context
71 {
74  {
75  Q_OBJECT
76  Q_CLASSINFO("D-Bus Interface", SWIFT_CORE_CONTEXTNETWORK_INTERFACENAME)
77 
78  public:
80  static const QString &InterfaceName()
81  {
83  return s;
84  }
85 
87  static const QString &ObjectPath()
88  {
89  static QString s(SWIFT_CORE_CONTEXTNETWORK_OBJECTPATH);
90  return s;
91  }
92 
94  virtual QString getPathAndContextId() const override { return this->buildPathAndContextId(ObjectPath()); }
95 
97  static IContextNetwork *create(CCoreFacade *parent, CCoreFacadeConfig::ContextMode mode,
98  swift::misc::CDBusServer *server, QDBusConnection &connection);
99 
101  virtual ~IContextNetwork() override {}
102 
103  signals:
106 
109 
112 
115 
118 
121 
124 
129  const swift::misc::CIdentifier &originator);
130 
136 
139 
142 
145 
147  void kicked(const QString &kickMessage);
148 
150  void severeNetworkError(const QString &errorMessage);
151 
153  void muteRequestReceived(bool mute);
154 
159 
164 
167 
170 
173 
174  public slots:
176  virtual swift::misc::aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const = 0;
177 
182 
185 
188 
192 
194  virtual int getAircraftInRangeCount() const = 0;
195 
197  virtual bool isAircraftInRange(const swift::misc::aviation::CCallsign &callsign) const = 0;
198 
202 
206 
210 
212  virtual bool isOnlineStation(const swift::misc::aviation::CCallsign &callsign) const = 0;
213 
216 
220 
224 
227 
231 
233  virtual bool setOtherClient(const swift::misc::network::CClient &client) = 0;
234 
237 
240 
243 
247  const QString &extraLiveryString, bool sendLivery,
248  const QString &extraModelString, bool sendModelString,
249  const swift::misc::aviation::CCallsign &partnerCallsign,
250  swift::misc::network::CLoginMode loginMode) = 0;
251 
254 
257 
259  QString getLoginModeAsString() const { return this->getLoginMode().toQString(); }
260 
264 
266  virtual bool isConnected() const = 0;
267 
269  virtual void sendTextMessages(const swift::misc::network::CTextMessageList &textMessages) = 0;
270 
272  virtual void sendFlightPlan(const swift::misc::aviation::CFlightPlan &flightPlan) = 0;
273 
277 
279  virtual void requestAircraftDataUpdates() = 0;
280 
282  virtual void requestAtisUpdates() = 0;
283 
286  bool enabledForRendering) = 0;
287 
290  bool enabledForRendering) = 0;
291 
294  bool supportGndFlag) = 0;
295 
299  const swift::misc::CIdentifier &originator) = 0;
300 
304  const swift::misc::CIdentifier &originator) = 0;
305 
308  bool enableFastPositionSending) = 0;
309 
311  virtual int reInitializeAllAircraft() = 0;
312 
316 
318  virtual swift::misc::simulation::ReverseLookupLogging isReverseLookupMessagesEnabled() const = 0;
319 
321  virtual void enableReverseLookupMessages(swift::misc::simulation::ReverseLookupLogging enable) = 0;
322 
326 
330 
332  virtual bool isRemoteAircraftSupportingParts(const swift::misc::aviation::CCallsign &callsign) const = 0;
333 
335  virtual bool isAircraftPartsHistoryEnabled() const = 0;
336 
338  virtual void enableAircraftPartsHistory(bool enabled) = 0;
339 
341  virtual QString getNetworkStatistics(bool reset, const QString &separator) = 0;
342 
344  virtual bool setNetworkStatisticsEnable(bool enabled) = 0;
345 
347  virtual QStringList getNetworkPresetValues() const = 0;
348 
351 
352  // ------------------------ testing ------------------------
353 
355  virtual void testCreateDummyOnlineAtcStations(int number) = 0;
356 
359  const swift::misc::aviation::CAircraftParts &parts, bool incremental) = 0;
360 
363 
367 
370 
375 
376  public:
379 
381  virtual QMetaObject::Connection
382  connectRawFsdMessageSignal(QObject *receiver, RawFsdMessageReceivedSlot rawFsdMessageReceivedSlot) = 0;
383 
385  static const QList<QCommandLineOption> &getCmdLineOptions();
386 
387 #ifdef SWIFT_VATSIM_SUPPORT
389  static bool getCmdLineClientIdAndKey(int &id, QString &key);
390 #endif
391 
392  protected:
395  };
396 } // namespace swift::core::context
397 #endif // SWIFT_CORE_CONTEXT_CONTEXTNETWORK_H
ContextMode
How to handle a given context.
The class providing facades (the contexts) for all DBus relevant operations.
Definition: corefacade.h:57
Base for all context classes.
Definition: context.h:34
void textMessageSent(const swift::misc::network::CTextMessage &sentMessage)
Text message sent (by me)
virtual void sendFlightPlan(const swift::misc::aviation::CFlightPlan &flightPlan)=0
Send flight plan.
virtual swift::misc::CStatusMessage disconnectFromNetwork()=0
Disconnect from network.
virtual bool testAddAltitudeOffset(const swift::misc::aviation::CCallsign &callsign, const swift::misc::physical_quantities::CLength &offset=swift::misc::physical_quantities::CLength::null())=0
Add altitude offset for testing.
void changedAircraftInRange()
Aircraft list has been changed.
virtual swift::misc::network::CUserList getUsers() const =0
Get all users.
virtual swift::misc::aviation::CCallsignSet getAircraftInRangeCallsigns() const =0
Aircraft callsigns.
void supervisorTextMessageReceived(const swift::misc::network::CTextMessage &message)
A supervisor text message was received.
void connectedServerChanged(const swift::misc::network::CServer &server)
The connected server has been changed.
virtual bool isAircraftPartsHistoryEnabled() const =0
Is storing the aircraft parts history enabled?
void changedFastPositionUpdates(const swift::misc::simulation::CSimulatedAircraft &aircraft)
Aircraft enabled / disabled.
virtual swift::misc::CStatusMessageList getAircraftPartsHistory(const swift::misc::aviation::CCallsign &callsign) const =0
Get aircraft parts history.
void addedAircraft(const swift::misc::simulation::CSimulatedAircraft &remoteAircraft)
A new aircraft appeared.
virtual swift::misc::network::CClientList getClients() const =0
Information about other clients.
virtual QStringList getNetworkPresetValues() const =0
Network preset values.
virtual swift::misc::aviation::CFlightPlan loadFlightPlanFromNetwork(const swift::misc::aviation::CCallsign &callsign) const =0
Load flight plan (from network)
void changedGndFlagCapability(const swift::misc::simulation::CSimulatedAircraft &aircraft)
Changed gnd. flag capability.
virtual swift::misc::network::CUserList getUsersForCallsigns(const swift::misc::aviation::CCallsignSet &callsigns) const =0
Users for given callsigns, e.g. for voice room resolution.
void muteRequestReceived(bool mute)
Mute request received.
virtual swift::misc::aviation::CAtcStationList getOnlineStationsForFrequency(const swift::misc::physical_quantities::CFrequency &frequency) const =0
Online stations for frequency.
void changedRemoteAircraftModel(const swift::misc::simulation::CSimulatedAircraft &aircraft, const swift::misc::CIdentifier &originator)
Aircraft model was changed.
virtual swift::misc::simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const swift::misc::aviation::CCallsign &callsign) const =0
Aircraft for given callsign.
void changedAtcStationsOnline()
ATC station (online) list has been changed.
virtual bool updateAircraftModel(const swift::misc::aviation::CCallsign &callsign, const swift::misc::simulation::CAircraftModel &model, const swift::misc::CIdentifier &originator)=0
Change model (for remote aircraft)
virtual swift::misc::network::CServerList getVatsimFsdServers() const =0
Known FSD servers, available when data file was first read.
virtual bool setOtherClient(const swift::misc::network::CClient &client)=0
Set client for given callsign.
virtual bool updateAircraftEnabled(const swift::misc::aviation::CCallsign &callsign, bool enabledForRendering)=0
Enable/disable rendering.
virtual bool updateFastPositionEnabled(const swift::misc::aviation::CCallsign &callsign, bool enableFastPositionSending)=0
Change fast position updates.
virtual void testCreateDummyOnlineAtcStations(int number)=0
Create dummy ATC stations for performance tests etc.
void textMessagesReceived(const swift::misc::network::CTextMessageList &textMessages)
Text messages received (also private chat messages, radio channel messages)
virtual swift::misc::aviation::CAircraftPartsList getRemoteAircraftParts(const swift::misc::aviation::CCallsign &callsign) const =0
Get remote aircraft parts.
virtual bool updateAircraftSupportingGndFLag(const swift::misc::aviation::CCallsign &callsign, bool supportGndFlag)=0
Enable/disable support of gnd. flag.
virtual swift::misc::network::CUser getUserForCallsign(const swift::misc::aviation::CCallsign &callsign) const =0
User for given callsign, e.g. for text messages.
virtual void requestAircraftDataUpdates()=0
Request data updates (pilot's frequencies, ATIS, ..)
static const QString & InterfaceName()
DBus interface name.
virtual swift::misc::CStatusMessage connectToNetwork(const swift::misc::network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const swift::misc::aviation::CCallsign &partnerCallsign, swift::misc::network::CLoginMode loginMode)=0
Connect to Network.
QString getLoginModeAsString() const
Mode as string.
static const QString & ObjectPath()
DBus object path.
virtual void setFastPositionEnabledCallsigns(swift::misc::aviation::CCallsignSet &callsigns)=0
Callsigns enabled for fast position updates.
virtual void requestAtisUpdates()=0
Request ATIS updates (for all stations)
virtual swift::misc::CStatusMessageList getReverseLookupMessages(const swift::misc::aviation::CCallsign &callsign) const =0
Get reverse lookup messages.
virtual bool isOnlineStation(const swift::misc::aviation::CCallsign &callsign) const =0
Online station for callsign?
void kicked(const QString &kickMessage)
User has been kicked from network.
virtual void sendTextMessages(const swift::misc::network::CTextMessageList &textMessages)=0
Text messages (radio and private chat messages)
std::function< void(const swift::misc::network::CRawFsdMessage &)> RawFsdMessageReceivedSlot
Raw FSD message receiver functor.
virtual bool isRemoteAircraftSupportingParts(const swift::misc::aviation::CCallsign &callsign) const =0
Parts supported?
virtual QMetaObject::Connection connectRawFsdMessageSignal(QObject *receiver, RawFsdMessageReceivedSlot rawFsdMessageReceivedSlot)=0
Connect to receive raw fsd messages.
virtual swift::misc::aviation::CCallsignSet getFastPositionEnabledCallsigns() const =0
Callsigns enabled for fast position updates.
virtual QString getPathAndContextId() const
Id and path name for round trip protection.
virtual swift::misc::aviation::CAtcStation getOnlineStationForCallsign(const swift::misc::aviation::CCallsign &callsign) const =0
Online station for callsign.
void changedAtcStationsOnlineDigest()
Digest signal changedAtcStationsOnline()
IContextNetwork(CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime)
Constructor.
virtual void enableAircraftPartsHistory(bool enabled)=0
Enable storing of aircraft parts.
virtual swift::misc::network::CLoginMode getLoginMode() const =0
Login mode.
void changedRemoteAircraftEnabled(const swift::misc::simulation::CSimulatedAircraft &aircraft)
Aircraft enabled / disabled.
void connectionStatusChanged(const swift::misc::network::CConnectionStatus &from, const swift::misc::network::CConnectionStatus &to)
Connection status changed.
virtual swift::misc::simulation::CSimulatedAircraftList getAircraftInRange() const =0
Aircraft list.
void atcStationDisconnected(const swift::misc::aviation::CAtcStation &atcStation)
ATC station disconnected.
virtual int reInitializeAllAircraft()=0
Re-initialize all aircraft.
virtual QString getNetworkStatistics(bool reset, const QString &separator)=0
Statistics info.
void severeNetworkError(const QString &errorMessage)
Network error.
void readyForModelMatching(const swift::misc::simulation::CSimulatedAircraft &renderedAircraft)
Read for model matching.
virtual void testReceivedTextMessages(const swift::misc::network::CTextMessageList &textMessages)=0
Inject a text message as received.
virtual swift::misc::simulation::ReverseLookupLogging isReverseLookupMessagesEnabled() const =0
Enabled reverse lookup logging?
virtual swift::misc::aviation::CCallsign getPartnerCallsign() const =0
Partner callsign if any.
virtual void testReceivedAtisMessage(const swift::misc::aviation::CCallsign &callsign, const swift::misc::aviation::CInformationMessage &msg)=0
Inject an ATIS.
virtual swift::misc::weather::CMetar getMetarForAirport(const swift::misc::aviation::CAirportIcaoCode &airportIcaoCode) const =0
Get METAR, if not available request it (code such as EDDF, KLAX)
virtual swift::misc::network::CServer getConnectedServer() const =0
Server which is connected, if not connected empty default object.
virtual swift::misc::aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const =0
The ATC list with online ATC controllers.
void changedAircraftInRangeDigest()
Digest signal changedAircraftInRange()
virtual swift::misc::network::CClientList getClientsForCallsigns(const swift::misc::aviation::CCallsignSet &callsigns) const =0
Clients for given callsign, e.g. to test/fetch direct aircraft model.
virtual swift::misc::aviation::CAtcStationList getClosestAtcStationsOnline(int number) const =0
The ATC list with online ATC controllers.
virtual void testRequestAircraftConfig(const swift::misc::aviation::CCallsign &callsign)=0
Request parts for callsign (from another client)
void removedAircraft(const swift::misc::aviation::CCallsign &callsign)
An aircraft disappeared.
virtual bool isAircraftInRange(const swift::misc::aviation::CCallsign &callsign) const =0
Aircraft in range.
virtual bool setAircraftEnabledFlag(const swift::misc::aviation::CCallsign &callsign, bool enabledForRendering)=0
Set the enabled flag without any further logic like sending signals.
virtual void testAddAircraftParts(const swift::misc::aviation::CCallsign &callsign, const swift::misc::aviation::CAircraftParts &parts, bool incremental)=0
Inject aircraft parts for testing.
virtual bool updateAircraftNetworkModel(const swift::misc::aviation::CCallsign &callsign, const swift::misc::simulation::CAircraftModel &model, const swift::misc::CIdentifier &originator)=0
Change network model (for remote aircraft)
virtual bool setNetworkStatisticsEnable(bool enabled)=0
Statistics enable/disable.
virtual bool isConnected() const =0
Network connected?
virtual int getAircraftInRangeCount() const =0
Aircraft count.
virtual void enableReverseLookupMessages(swift::misc::simulation::ReverseLookupLogging enable)=0
Enable reverse lookup logging.
Custom DBusServer.
Definition: dbusserver.h:34
Value object encapsulating information identifying a component of a modular distributed swift process...
Definition: identifier.h:29
Streamable status message, e.g.
Status messages, e.g. from Core -> GUI.
Value object encapsulating information of aircraft's parts.
Definition: aircraftparts.h:26
Value object encapsulating a list of aircraft parts.
Value object encapsulating information of airport ICAO data.
Value object encapsulating information about an ATC station.
Definition: atcstation.h:38
Value object for a list of ATC stations.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
Value object for a set of callsigns.
Definition: callsignset.h:26
Value object for a flight plan.
Definition: flightplan.h:148
Value object encapsulating information message (ATIS, METAR, TAF)
Another client software.
Definition: client.h:27
Value object encapsulating a list of voice rooms.
Definition: clientlist.h:27
Value object encapsulating information about a connection status.
Value object encapsulating information about login mode.
Definition: loginmode.h:18
Value object for a raw FSD message.
Definition: rawfsdmessage.h:25
Value object encapsulating information of a server.
Definition: server.h:28
Value object encapsulating a list of servers.
Definition: serverlist.h:23
Value object encapsulating information of a text message.
Definition: textmessage.h:31
Value object encapsulating a list of text messages.
Value object encapsulating information of a user.
Definition: user.h:28
Value object encapsulating a list of voice rooms.
Definition: userlist.h:26
Physical unit length (length)
Definition: length.h:18
Aircraft model (used by another pilot, my models on disk)
Definition: aircraftmodel.h:71
Comprehensive information of an aircraft.
Value object encapsulating a list of aircraft.
Value object encapsulating information about METAR FIXME: runway visibilities FIXME: runway wind shea...
Definition: metar.h:38
#define SWIFT_CORE_CONTEXTNETWORK_OBJECTPATH
DBus object path for context.
#define SWIFT_CORE_CONTEXTNETWORK_INTERFACENAME
DBus interface for context.
Free functions in swift::misc.
#define SWIFT_CORE_EXPORT
Export a class or function from the library.