refs #179 updated sample_cli_client to recent changes in INetwork

This commit is contained in:
Mathew Sutcliffe
2014-03-23 22:56:45 +00:00
parent 37296e1822
commit 2f8efe5c3b
2 changed files with 65 additions and 2 deletions

View File

@@ -28,6 +28,7 @@ Client::Client(BlackMisc::IContext &ctx)
connect(m_net, &INetwork::icaoCodesReplyReceived, this, &Client::icaoCodesReplyReceived);
connect(m_net, &INetwork::pongReceived, this, &Client::pongReceived);
connect(m_net, &INetwork::textMessagesReceived, this, &Client::textMessagesReceived);
connect(m_net, &INetwork::customPacketReceived, this, &Client::customPacketReceived);
connect(this, &Client::presetServer, m_net, &INetwork::presetServer);
connect(this, &Client::presetCallsign, m_net, &INetwork::presetCallsign);
@@ -52,11 +53,14 @@ Client::Client(BlackMisc::IContext &ctx)
connect(this, &Client::sendPing, m_net, &INetwork::sendPing);
connect(this, &Client::sendMetarQuery, m_net, &INetwork::sendMetarQuery);
connect(this, &Client::sendWeatherDataQuery, m_net, &INetwork::sendWeatherDataQuery);
connect(this, &Client::sendCustomPacket, m_net, &INetwork::sendCustomPacket);
using namespace std::placeholders;
m_commands["help"] = std::bind(&Client::help, this, _1);
m_commands["echo"] = std::bind(&Client::echo, this, _1);
m_commands["exit"] = std::bind(&Client::exit, this, _1);
m_commands["getstatusurls"] = std::bind(&Client::getStatusUrlsCmd, this, _1);
m_commands["getservers"] = std::bind(&Client::getKnownServersCmd, this, _1);
m_commands["setserver"] = std::bind(&Client::presetServerCmd, this, _1);
m_commands["setcallsign"] = std::bind(&Client::presetCallsignCmd, this, _1);
m_commands["icaocodes"] = std::bind(&Client::presetIcaoCodesCmd, this, _1);
@@ -81,6 +85,7 @@ Client::Client(BlackMisc::IContext &ctx)
m_commands["ping"] = std::bind(&Client::sendPingCmd, this, _1);
m_commands["metar"] = std::bind(&Client::sendMetarQueryCmd, this, _1);
m_commands["weather"] = std::bind(&Client::sendWeatherDataQueryCmd, this, _1);
m_commands["custom"] = std::bind(&Client::sendCustomPacketCmd, this, _1);
}
void Client::command(QString line)
@@ -125,6 +130,24 @@ void Client::exit(QTextStream &)
emit quit();
}
void Client::getStatusUrlsCmd(QTextStream &)
{
auto urls = m_net->getStatusUrls();
for (auto i = urls.begin(); i != urls.end(); ++i)
{
std::cout << i->toString().toStdString() << std::endl;
}
}
void Client::getKnownServersCmd(QTextStream &)
{
auto servers = m_net->getKnownServers();
for (auto i = servers.begin(); i != servers.end(); ++i)
{
std::cout << i->toFormattedQString().toStdString() << std::endl;
}
}
void Client::presetServerCmd(QTextStream &args)
{
QString hostname;
@@ -377,6 +400,21 @@ void Client::sendWeatherDataQueryCmd(QTextStream &args)
emit sendWeatherDataQuery(airportICAO);
}
void Client::sendCustomPacketCmd(QTextStream &args)
{
QString callsign;
QString packetId;
args >> callsign >> packetId;
QStringList data;
while (!args.atEnd())
{
QString field;
args >> field;
data.push_back(field);
}
emit sendCustomPacket(callsign, packetId, data);
}
/****************************************************************************/
/************ Slots to receive signals from INetwork *************/
/****************************************************************************/
@@ -392,13 +430,16 @@ void Client::atcDisconnected(const BlackMisc::Aviation::CCallsign &callsign)
std::cout << "ATC_DISCONNECTED " << callsign << std::endl;
}
void Client::connectionStatusChanged(BlackCore::INetwork::ConnectionStatus oldStatus, BlackCore::INetwork::ConnectionStatus newStatus)
void Client::connectionStatusChanged(BlackCore::INetwork::ConnectionStatus oldStatus, BlackCore::INetwork::ConnectionStatus newStatus,
const QString &errorMessage)
{
switch (newStatus)
{
case BlackCore::INetwork::Disconnected: std::cout << "CONN_STATUS_DISCONNECTED"; break;
case BlackCore::INetwork::Disconnecting: std::cout << "CONN_STATUS_DISCONNECTING"; break;
case BlackCore::INetwork::DisconnectedError: std::cout << "CONN_STATUS_DISCONNECTED_ERROR"; break;
case BlackCore::INetwork::DisconnectedFailed: std::cout << "CONN_STATUS_DISCONNECTED_FAILED"; break;
case BlackCore::INetwork::DisconnectedLost: std::cout << "CONN_STATUS_DISCONNECTED_LOST"; break;
case BlackCore::INetwork::Connecting: std::cout << "CONN_STATUS_CONNECTING"; break;
case BlackCore::INetwork::Connected: std::cout << "CONN_STATUS_CONNECTED"; break;
}
@@ -407,9 +448,15 @@ void Client::connectionStatusChanged(BlackCore::INetwork::ConnectionStatus oldSt
case BlackCore::INetwork::Disconnected: std::cout << " (was CONN_STATUS_DISCONNECTED)\n"; break;
case BlackCore::INetwork::Disconnecting: std::cout << " (was CONN_STATUS_DISCONNECTING)\n"; break;
case BlackCore::INetwork::DisconnectedError: std::cout << " (was CONN_STATUS_DISCONNECTED_ERROR)\n"; break;
case BlackCore::INetwork::DisconnectedFailed: std::cout << " (was CONN_STATUS_DISCONNECTED_FAILED)\n"; break;
case BlackCore::INetwork::DisconnectedLost: std::cout << " (was CONN_STATUS_DISCONNECTED_LOST)\n"; break;
case BlackCore::INetwork::Connecting: std::cout << " (was CONN_STATUS_CONNECTING)\n"; break;
case BlackCore::INetwork::Connected: std::cout << " (was CONN_STATUS_CONNECTED)\n"; break;
}
if (!errorMessage.isEmpty())
{
std::cout << "REASON " << errorMessage.toStdString() << std::endl;
}
}
void Client::ipReplyReceived(const QString &ip)
@@ -476,3 +523,13 @@ void Client::textMessagesReceived(const BlackMisc::Network::CTextMessageList &li
{
std::cout << "TEXT MESSAGE" << list.toStdString();
}
void Client::customPacketReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &packetId, const QStringList &data)
{
std::cout << "CUSTOM " << callsign << " " << packetId.toStdString() << " ";
for (auto i = data.begin(); i != data.end(); ++i)
{
std::cout << i->toStdString() << std::endl;
}
std::cout << std::endl;
}

View File

@@ -30,6 +30,8 @@ private: //commands
void help(QTextStream &args);
void echo(QTextStream &args);
void exit(QTextStream &args);
void getStatusUrlsCmd(QTextStream &args);
void getKnownServersCmd(QTextStream &args);
void presetServerCmd(QTextStream &args);
void presetCallsignCmd(QTextStream &args);
void presetIcaoCodesCmd(QTextStream &args);
@@ -54,6 +56,7 @@ private: //commands
void sendPingCmd(QTextStream &args);
void sendMetarQueryCmd(QTextStream &args);
void sendWeatherDataQueryCmd(QTextStream &args);
void sendCustomPacketCmd(QTextStream &args);
signals: //to send to INetwork
void presetServer(const BlackMisc::Network::CServer &server);
@@ -82,12 +85,14 @@ signals: //to send to INetwork
void sendPing(const BlackMisc::Aviation::CCallsign &callsign);
void sendMetarQuery(const QString &airportICAO);
void sendWeatherDataQuery(const QString &airportICAO);
void sendCustomPacket(const BlackMisc::Aviation::CCallsign &callsign, const QString &packetId, const QStringList &data);
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 connectionStatusChanged(BlackCore::INetwork::ConnectionStatus oldStatus, BlackCore::INetwork::ConnectionStatus newStatus,
const QString &errorMessage);
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);
@@ -101,6 +106,7 @@ public slots: //to receive from INetwork
void icaoCodesReplyReceived(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);
void customPacketReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &packetId, const QStringList &data);
private:
QMap<QString, std::function<void(QTextStream &)>> m_commands;