mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-13 15:45:42 +08:00
Added CServer member isAcceptingConnections.
This commit is contained in:
@@ -25,6 +25,8 @@
|
|||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QMetaEnum>
|
#include <QMetaEnum>
|
||||||
|
#include <QList>
|
||||||
|
#include <QUrl>
|
||||||
|
|
||||||
namespace BlackCore
|
namespace BlackCore
|
||||||
{
|
{
|
||||||
@@ -120,6 +122,18 @@ namespace BlackCore
|
|||||||
*/
|
*/
|
||||||
virtual bool isConnected() const = 0;
|
virtual bool isConnected() const = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns a list of URLs where network status data can be found.
|
||||||
|
* To obtain the status, one of these URLs should be picked at random.
|
||||||
|
*/
|
||||||
|
virtual QList<QUrl> getStatusUrls() const = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns a list of known servers which may be connected to.
|
||||||
|
* Not all servers may be accepting connections; consult the CServer::isAcceptingConnections method.
|
||||||
|
*/
|
||||||
|
virtual BlackMisc::Network::CServerList getKnownServers() const = 0;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
//! \name Network slots
|
//! \name Network slots
|
||||||
|
|||||||
@@ -317,6 +317,61 @@ namespace BlackCore
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<QUrl> CNetworkVatlib::getStatusUrls() const
|
||||||
|
{
|
||||||
|
QList<QUrl> result;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Cvatlib_Network *net = m_net.data();
|
||||||
|
decltype(m_net) netPtr;
|
||||||
|
if (!net)
|
||||||
|
{
|
||||||
|
netPtr.reset(Cvatlib_Network::Create());
|
||||||
|
net = netPtr.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto urlsPtr = QSharedPointer<const char *const>(net->GetVatsimStatusUrls(), [=](const char *const *p){ net->GetVatsimStatusUrls_Free(p); });
|
||||||
|
auto urls = urlsPtr.data();
|
||||||
|
while (*urls)
|
||||||
|
{
|
||||||
|
result.push_back(QUrl(*urls++));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
BlackMisc::Network::CServerList CNetworkVatlib::getKnownServers() const
|
||||||
|
{
|
||||||
|
BlackMisc::Network::CServerList result;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Cvatlib_Network *net = m_net.data();
|
||||||
|
decltype(m_net) netPtr;
|
||||||
|
if (!net)
|
||||||
|
{
|
||||||
|
netPtr.reset(Cvatlib_Network::Create());
|
||||||
|
net = netPtr.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto namesPtr = QSharedPointer<const char *const>(net->GetVatsimFSDServerNames(), [=](const char *const *p){ net->GetVatsimFSDServerNames_Free(p); });
|
||||||
|
auto ipsPtr = QSharedPointer<const char *const>(net->GetVatsimFSDServerIps(), [=](const char *const *p){ net->GetVatsimFSDServerIps_Free(p); });
|
||||||
|
auto locationsPtr = QSharedPointer<const char *const>(net->GetVatsimFSDServerLocations(), [=](const char *const *p){ net->GetVatsimFSDServerLocations_Free(p); });
|
||||||
|
auto acceptsPtr = QSharedPointer<const bool>(net->GetVatsimFSDServerAcceptingConnections(), [=](const bool *p){ net->GetVatsimFSDServerAcceptingConnections_Free(p); });
|
||||||
|
auto names = namesPtr.data();
|
||||||
|
auto ips = ipsPtr.data();
|
||||||
|
auto locations = locationsPtr.data();
|
||||||
|
auto accepts = acceptsPtr.data();
|
||||||
|
int port = 6809; // TODO hard-coded number?
|
||||||
|
while (*names)
|
||||||
|
{
|
||||||
|
result.push_back(BlackMisc::Network::CServer(*names++, *locations++, *ips++, port, BlackMisc::Network::CUser(), *accepts++));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (...) { exceptionDispatcher(Q_FUNC_INFO); }
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
||||||
/********************************** INetwork slots ************************************/
|
/********************************** INetwork slots ************************************/
|
||||||
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
||||||
|
|||||||
@@ -38,6 +38,12 @@ namespace BlackCore
|
|||||||
//! \copydoc INetwork::isConnected()
|
//! \copydoc INetwork::isConnected()
|
||||||
virtual bool isConnected() const override { return m_status == Cvatlib_Network::connStatus_Connected; }
|
virtual bool isConnected() const override { return m_status == Cvatlib_Network::connStatus_Connected; }
|
||||||
|
|
||||||
|
//! \copydoc INetwork::getStatusUrls()
|
||||||
|
virtual QList<QUrl> getStatusUrls() const override;
|
||||||
|
|
||||||
|
//! \copydoc INetwork::getKnownServers()
|
||||||
|
virtual BlackMisc::Network::CServerList getKnownServers() const override;
|
||||||
|
|
||||||
// Network slots
|
// Network slots
|
||||||
virtual void presetServer(const BlackMisc::Network::CServer &server) override;
|
virtual void presetServer(const BlackMisc::Network::CServer &server) override;
|
||||||
virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) override;
|
virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ namespace BlackMisc
|
|||||||
s.append(" ").append(this->m_address);
|
s.append(" ").append(this->m_address);
|
||||||
s.append(" ").append(QString::number(this->m_port));
|
s.append(" ").append(QString::number(this->m_port));
|
||||||
s.append(" ").append(this->m_user.toQString(i18n));
|
s.append(" ").append(this->m_user.toQString(i18n));
|
||||||
|
s.append(" ").append(this->m_isAcceptingConnections ? "true" : "false");
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,7 +69,7 @@ namespace BlackMisc
|
|||||||
*/
|
*/
|
||||||
bool CServer::isValidForLogin() const
|
bool CServer::isValidForLogin() const
|
||||||
{
|
{
|
||||||
return this->m_user.hasValidCredentials() && this->m_port > 0 && !this->m_address.isEmpty();
|
return this->m_user.hasValidCredentials() && this->m_port > 0 && !this->m_address.isEmpty() && this->isAcceptingConnections();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -115,6 +116,8 @@ namespace BlackMisc
|
|||||||
return QVariant::fromValue(this->m_user.getId());
|
return QVariant::fromValue(this->m_user.getId());
|
||||||
case IndexUserRealName:
|
case IndexUserRealName:
|
||||||
return QVariant::fromValue(this->m_user.getRealName());
|
return QVariant::fromValue(this->m_user.getRealName());
|
||||||
|
case IndexIsAcceptingConnections:
|
||||||
|
return QVariant::fromValue(this->m_isAcceptingConnections);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -161,6 +164,9 @@ namespace BlackMisc
|
|||||||
case IndexUserRealName:
|
case IndexUserRealName:
|
||||||
this->m_user.setRealName(variant.value<QString>());
|
this->m_user.setRealName(variant.value<QString>());
|
||||||
break;
|
break;
|
||||||
|
case IndexIsAcceptingConnections:
|
||||||
|
this->setIsAcceptingConnections(variant.value<bool>());
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Q_ASSERT_X(false, "CServer", "index unknown");
|
Q_ASSERT_X(false, "CServer", "index unknown");
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! \brief Default constructor.
|
//! \brief Default constructor.
|
||||||
CServer() : m_port(-1) {}
|
CServer() : m_port(-1), m_isAcceptingConnections(true) {}
|
||||||
|
|
||||||
//! \brief Constructor.
|
//! \brief Constructor.
|
||||||
CServer(const QString &name, const QString &description, const QString &address, qint32 port, const CUser &user)
|
CServer(const QString &name, const QString &description, const QString &address, qint32 port, const CUser &user, bool isAcceptingConnections = true)
|
||||||
: m_name(name), m_description(description), m_address(address), m_port(port), m_user(user) {}
|
: m_name(name), m_description(description), m_address(address), m_port(port), m_user(user), m_isAcceptingConnections(isAcceptingConnections) {}
|
||||||
|
|
||||||
//! \copydoc CValueObject::toQVariant
|
//! \copydoc CValueObject::toQVariant
|
||||||
virtual QVariant toQVariant() const override
|
virtual QVariant toQVariant() const override
|
||||||
@@ -65,6 +65,12 @@ namespace BlackMisc
|
|||||||
//! \brief Set port
|
//! \brief Set port
|
||||||
void setPort(qint32 port) { m_port = port; }
|
void setPort(qint32 port) { m_port = port; }
|
||||||
|
|
||||||
|
//! \brief Server is accepting connections
|
||||||
|
bool isAcceptingConnections() const { return m_isAcceptingConnections; }
|
||||||
|
|
||||||
|
//! \brief Set whether server is accepting connections
|
||||||
|
void setIsAcceptingConnections(bool value) { m_isAcceptingConnections = value; }
|
||||||
|
|
||||||
//! \brief Is valid for login?
|
//! \brief Is valid for login?
|
||||||
bool isValidForLogin() const;
|
bool isValidForLogin() const;
|
||||||
|
|
||||||
@@ -98,7 +104,8 @@ namespace BlackMisc
|
|||||||
IndexPort,
|
IndexPort,
|
||||||
IndexUserId,
|
IndexUserId,
|
||||||
IndexUserRealName,
|
IndexUserRealName,
|
||||||
IndexUserPassword
|
IndexUserPassword,
|
||||||
|
IndexIsAcceptingConnections
|
||||||
};
|
};
|
||||||
|
|
||||||
//! \copydoc CValueObject::propertyByIndex(int)
|
//! \copydoc CValueObject::propertyByIndex(int)
|
||||||
@@ -136,11 +143,12 @@ namespace BlackMisc
|
|||||||
QString m_address;
|
QString m_address;
|
||||||
qint32 m_port;
|
qint32 m_port;
|
||||||
CUser m_user;
|
CUser m_user;
|
||||||
|
bool m_isAcceptingConnections;
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Network::CServer, (o.m_name, o.m_description, o.m_address, o.m_port, o.m_user))
|
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Network::CServer, (o.m_name, o.m_description, o.m_address, o.m_port, o.m_user, o.m_isAcceptingConnections))
|
||||||
Q_DECLARE_METATYPE(BlackMisc::Network::CServer)
|
Q_DECLARE_METATYPE(BlackMisc::Network::CServer)
|
||||||
|
|
||||||
#endif // guard
|
#endif // guard
|
||||||
|
|||||||
Reference in New Issue
Block a user