Files
pilotclient/src/blackcore/fsd/clientquery.h
2020-08-01 19:48:37 +01:00

70 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Copyright (C) 2019
* swift project community / contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
//! \file
#ifndef BLACKCORE_FSD_CLIENTQUERY_H
#define BLACKCORE_FSD_CLIENTQUERY_H
#include "messagebase.h"
#include "enums.h"
namespace BlackCore
{
namespace Fsd
{
//! This packet is used to query a clients data.
//!
//! Current uses include requests for flight-plans, INF responses, realname details, current server and current frequency.
//! All requests are sent directly to the client to be queried, currently, except the flight-plan request which is sent to
//! the server. Therefore, the only client which will return an error is SERVER.
//! Other clients will simply not reply if the code is unrecognised or request invalid.
class BLACKCORE_EXPORT ClientQuery : public MessageBase
{
public:
//! Constructor
ClientQuery(const QString &sender, const QString &clientToBeQueried, ClientQueryType queryType, const QStringList &queryData = {});
//! Message converted to tokens
QStringList toTokens() const;
//! Construct from tokens
static ClientQuery fromTokens(const QStringList &tokens);
//! PDU identifier
static QString pdu() { return "$CQ"; }
//! Properties
//! @{
ClientQueryType m_queryType = ClientQueryType::Unknown;
QStringList m_queryData;
//! @}
private:
ClientQuery();
};
//! Equal to operator
inline bool operator==(const ClientQuery &lhs, const ClientQuery &rhs)
{
return lhs.sender() == rhs.sender() &&
lhs.receiver() == rhs.receiver() &&
lhs.m_queryType == rhs.m_queryType &&
lhs.m_queryData == rhs.m_queryData;
}
//! Not equal to operator
inline bool operator!=(const ClientQuery &lhs, const ClientQuery &rhs)
{
return !(lhs == rhs);
}
}
}
#endif // guard