mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-10 05:55:33 +08:00
refs #100 Rationalization of INetwork signals and slots
* Naming convention: "preset" only when disconnected, "send" only when connected, "set" both * Every asynchronous pair is named as in "sendFooQuery" and "fooReplyReceived" * Moved LoginMode from CNetworkVatlib constructor to INetwork::presetLoginMode * Callsign and ICAO codes can only be changed when disconnected, so have their own "preset" methods ** Callsign and ICAO parts of setOwnAircraft are therefore ignored ** CUser part of setOwnAircraft is ignored, in favour of the CUser part of presetServer * CNetworkVatlib takes care of reconstructing m_net if the LoginMode is changed
This commit is contained in:
@@ -31,6 +31,16 @@ namespace BlackCore
|
||||
/*!
|
||||
* Interface for a connection to a multi-user flight simulation and ATC network.
|
||||
*
|
||||
* The connection can be in one of three essential states: disconnected, connecting, and
|
||||
* connected. (There is a fourth state, disconnected due to error, which is a substate of
|
||||
* disconnected.) Some slots may only be called when connected, and some may only be called
|
||||
* when disconnected; there is a naming convention to highlight this fact using prefixes:
|
||||
* "preset" slots are only callable when disconnected, "send" slots are only callable when
|
||||
* connected, and "set" slots are callable in any state.
|
||||
*
|
||||
* Slots with the word "query" in their names are handled asynchronously, with one or more
|
||||
* "reply" signals being sent in response to each invokation of a query slot.
|
||||
*
|
||||
* \warning If an INetwork signal is connected to a slot, and that slot emits a signal
|
||||
* which is connected to an INetwork slot, then at least one of those connections
|
||||
* must be a Qt::QueuedConnection.
|
||||
@@ -57,6 +67,13 @@ namespace BlackCore
|
||||
SupportsModelDescriptions = 1 << 2
|
||||
};
|
||||
|
||||
enum LoginMode
|
||||
{
|
||||
LoginNormal = 0,
|
||||
LoginAsObserver,
|
||||
LoginStealth
|
||||
};
|
||||
|
||||
enum ConnectionStatus
|
||||
{
|
||||
Disconnected = 0,
|
||||
@@ -76,19 +93,20 @@ namespace BlackCore
|
||||
|
||||
public slots:
|
||||
// Network
|
||||
virtual void setServer(const BlackMisc::Network::CServer &server) = 0;
|
||||
virtual void setCallsign(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void setRealName(const QString &name) = 0;
|
||||
virtual void presetServer(const BlackMisc::Network::CServer &server) = 0;
|
||||
virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void presetIcaoCodes(const BlackMisc::Aviation::CAircraftIcao &icao) = 0;
|
||||
virtual void presetLoginMode(LoginMode mode) = 0;
|
||||
virtual void initiateConnection() = 0;
|
||||
virtual void terminateConnection() = 0;
|
||||
virtual void ping(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void sendPing(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
|
||||
virtual void sendNameQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void sendIpQuery() = 0;
|
||||
virtual void sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
|
||||
// Text messages
|
||||
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) = 0;
|
||||
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &messages) = 0;
|
||||
|
||||
// ATC
|
||||
virtual void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
@@ -96,7 +114,7 @@ namespace BlackCore
|
||||
|
||||
// Aircraft
|
||||
virtual void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void requestAircraftInfo(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void sendAircraftInfoQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void sendFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
virtual void setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) = 0;
|
||||
virtual void setOwnAircraftPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) = 0;
|
||||
@@ -105,8 +123,8 @@ namespace BlackCore
|
||||
const BlackMisc::Aviation::CTransponder &transponder) = 0;
|
||||
|
||||
// Weather / flight plan
|
||||
virtual void requestMetar(const QString &airportICAO) = 0;
|
||||
virtual void requestWeatherData(const QString &airportICAO) = 0;
|
||||
virtual void sendMetarQuery(const QString &airportICAO) = 0;
|
||||
virtual void sendWeatherDataQuery(const QString &airportICAO) = 0;
|
||||
// TODO virtual void sendFlightPlan(...) = 0;
|
||||
|
||||
signals:
|
||||
@@ -114,37 +132,37 @@ namespace BlackCore
|
||||
void atcPositionUpdate(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq,
|
||||
const BlackMisc::Geo::CCoordinateGeodetic &pos, const BlackMisc::PhysicalQuantities::CLength &range);
|
||||
void atcDisconnected(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
void atcQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, bool isATC);
|
||||
void atisQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CInformationMessage &atis);
|
||||
void atisQueryVoiceRoomReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &url);
|
||||
void atisQueryLogoffTimeReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &zuluTime);
|
||||
void metarReceived(const QString &data);
|
||||
void atcReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, bool isATC);
|
||||
void atisReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CInformationMessage &atis);
|
||||
void atisVoiceRoomReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &url);
|
||||
void atisLogoffTimeReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &zuluTime);
|
||||
void metarReplyReceived(const QString &data);
|
||||
|
||||
// Aircraft
|
||||
void pilotDisconnected(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
void aircraftInfoReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icao);
|
||||
void aircraftInfoReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icao);
|
||||
void aircraftPositionUpdate(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation,
|
||||
const BlackMisc::Aviation::CTransponder &transponder);
|
||||
// TODO void aircraftInterimPositionUpdate(...);
|
||||
void frequencyQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq);
|
||||
void frequencyReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq);
|
||||
|
||||
// Connection / Network in general
|
||||
void statusMessage(const BlackMisc::CStatusMessage &message);
|
||||
void kicked(const QString &msg);
|
||||
void connectionStatusChanged(ConnectionStatus oldStatus, ConnectionStatus newStatus);
|
||||
void pong(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CTime &elapsedTime);
|
||||
void capabilitiesQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, quint32 flags);
|
||||
void ipQueryReplyReceived(const QString &ip);
|
||||
void serverQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &hostname);
|
||||
void nameQueryReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname);
|
||||
void pongReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CTime &elapsedTime);
|
||||
void capabilitiesReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, quint32 flags);
|
||||
void ipReplyReceived(const QString &ip);
|
||||
void serverReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &hostname);
|
||||
void nameReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname);
|
||||
|
||||
// Text messages
|
||||
void textMessagesReceived(const BlackMisc::Network::CTextMessageList &messages);
|
||||
|
||||
// Weather
|
||||
// TODO void temperatureDataReceived(...);
|
||||
// TODO void windDataReceived(...);
|
||||
// TODO void cloudDataReceived(...);
|
||||
// TODO void temperatureDataReplyReceived(...);
|
||||
// TODO void windDataReplyReceived(...);
|
||||
// TODO void cloudDataReplyReceived(...);
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user