Files
pilotclient/samples/cli_client/client.h
Mathew Sutcliffe 0af8c9eb3e 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
2014-01-25 19:36:37 +00:00

109 lines
5.4 KiB
C++

/* Copyright (C) 2013 VATSIM Community / authors
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef __BLACKSAMPLE_CLI_CLIENT_H__
#define __BLACKSAMPLE_CLI_CLIENT_H__
#include "blackcore/network.h"
#include "blackmisc/context.h"
#include <QObject>
#include <QTextStream>
#include <QMap>
#include <functional>
class Client : public QObject
{
Q_OBJECT
public:
Client(BlackMisc::IContext &);
signals:
void quit();
public slots:
void command(QString line);
private: //commands
void help(QTextStream &args);
void echo(QTextStream &args);
void exit(QTextStream &args);
void presetServerCmd(QTextStream &args);
void presetCallsignCmd(QTextStream &args);
void presetIcaoCodesCmd(QTextStream &args);
void presetLoginModeCmd(QTextStream &args);
void initiateConnectionCmd(QTextStream &args);
void terminateConnectionCmd(QTextStream &args);
void sendPrivateTextMessageCmd(QTextStream &args);
void sendRadioTextMessageCmd(QTextStream &args);
void sendIpQueryCmd(QTextStream &args);
void sendFreqQueryCmd(QTextStream &args);
void sendServerQueryCmd(QTextStream &args);
void sendAtcQueryCmd(QTextStream &args);
void sendAtisQueryCmd(QTextStream &args);
void sendNameQueryCmd(QTextStream &args);
void sendCapabilitiesQueryCmd(QTextStream &args);
void sendAircraftInfoQueryCmd(QTextStream &args);
void setOwnAircraftCmd(QTextStream &args);
void setOwnAircraftPositionCmd(QTextStream &args);
void setOwnAircraftSituationCmd(QTextStream &args);
void setOwnAircraftAvionicsCmd(QTextStream &args);
void sendPingCmd(QTextStream &args);
void sendMetarQueryCmd(QTextStream &args);
void sendWeatherDataQueryCmd(QTextStream &args);
signals: //to send to INetwork
void presetServer(const BlackMisc::Network::CServer &server);
void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign);
void presetRealName(const QString &name);
void presetIcaoCodes(const BlackMisc::Aviation::CAircraftIcao &icao);
void presetLoginMode(BlackCore::INetwork::LoginMode mode);
void initiateConnection();
void terminateConnection();
void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages);
void sendRadioTextMessage(const QVector<BlackMisc::PhysicalQuantities::CFrequency> &freqs, const QString &msg);
void sendIpQuery();
void sendFreqQuery(const BlackMisc::Aviation::CCallsign &callsign);
void sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign);
void sendAtcQuery(const BlackMisc::Aviation::CCallsign &callsign);
void sendAtisQuery(const BlackMisc::Aviation::CCallsign &callsign);
void sendNameQuery(const BlackMisc::Aviation::CCallsign &callsign);
void sendCapabilitiesQuery(const BlackMisc::Aviation::CCallsign &callsign);
void sendAircraftInfoQuery(const BlackMisc::Aviation::CCallsign &callsign);
void setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft);
void setOwnAircraftPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude);
void setOwnAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation);
void setOwnAircraftAvionics(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2,
const BlackMisc::Aviation::CTransponder &xpdr);
void sendPing(const BlackMisc::Aviation::CCallsign &callsign);
void sendMetarQuery(const QString &airportICAO);
void sendWeatherDataQuery(const QString &airportICAO);
public slots: //to receive from INetwork
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 connectionStatusChanged(BlackCore::INetwork::ConnectionStatus oldStatus, BlackCore::INetwork::ConnectionStatus newStatus);
void ipReplyReceived(const QString &ip);
void freqReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &freq);
void serverReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &hostname);
void atcReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, bool isATC);
void atisReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CInformationMessage &atis);
void nameReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname);
void capabilitiesReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, quint32 flags);
void kicked(const QString &msg);
void metarReplyReceived(const QString &data);
void pilotDisconnected(const BlackMisc::Aviation::CCallsign &callsign);
void aircraftInfoReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftIcao &icaoData);
void pongReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CTime &elapsedTime);
void textMessagesReceived(const BlackMisc::Network::CTextMessageList &messages);
private:
QMap<QString, std::function<void(QTextStream &)>> m_commands;
BlackCore::INetwork *m_net;
};
#endif //__BLACKSAMPLE_CLI_CLIENT_H__