Files
pilotclient/src/blackcore/context_network.h
Roland Winklmeier cb7ad005b0 refs #320 port Network to new vatlib
* CNetworkVatlib
* Contexts
* Samples
2014-12-27 11:08:32 +01:00

211 lines
7.6 KiB
C++

/* Copyright (C) 2013
* 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 and at http://www.swift-project.org/license.html. 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_CONTEXTNETWORK_H
#define BLACKCORE_CONTEXTNETWORK_H
#include "blackcore/context.h"
#include "blackmisc/avatcstationlist.h"
#include "blackmisc/avaircraftlist.h"
#include "blackmisc/statusmessage.h"
#include "blackmisc/statusmessagelist.h"
#include "blackmisc/nwtextmessagelist.h"
#include "blackmisc/nwuserlist.h"
#include "blackmisc/nwclientlist.h"
#include "blackmisc/voiceroomlist.h"
#include "blackcore/network.h"
//! \addtogroup dbus
//! @{
//! DBus interface for context
#define BLACKCORE_CONTEXTNETWORK_INTERFACENAME "net.vatsim.PilotClient.BlackCore.ContextNetwork"
//! DBus object path for context
#define BLACKCORE_CONTEXTNETWORK_OBJECTPATH "/Network"
//! @}
namespace BlackCore
{
//! Network context proxy
class IContextNetwork : public CContext
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", BLACKCORE_CONTEXTNETWORK_INTERFACENAME)
public:
//! DBus interface name
static const QString &InterfaceName()
{
static QString s(BLACKCORE_CONTEXTNETWORK_INTERFACENAME);
return s;
}
//! DBus object path
static const QString &ObjectPath()
{
static QString s(BLACKCORE_CONTEXTNETWORK_OBJECTPATH);
return s;
}
//! \copydoc CContext::getPathAndContextId()
virtual QString getPathAndContextId() const { return this->buildPathAndContextId(ObjectPath()); }
//! Factory method
static IContextNetwork *create(CRuntime *parent, CRuntimeConfig::ContextMode mode, CDBusServer *server, QDBusConnection &conn);
//! Destructor
virtual ~IContextNetwork() {}
signals:
//! ATC station (online) list has been changed
void changedAtcStationsOnline();
//! Digest signal changedAtcStationsOnline()
void changedAtcStationsOnlineDigest();
//! ATC station (booked) list has been changed
void changedAtcStationsBooked();
//! Digest signal changedAtcStationsBooked()
void changedAtcStationsBookedDigest();
//! Aircraft list has been changed
void changedAircraftsInRange();
//! Digest signal changedAircraftsInRange()
void changedAircraftsInRangeDigest();
//! Aircraft situation update
void changedAircraftSituation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation);
//! Connection status changed for online station
void changedAtcStationOnlineConnectionStatus(const BlackMisc::Aviation::CAtcStation &atcStation, bool connected);
//! Terminated connection
void connectionTerminated();
//! VATSIM data file was read
void vatsimDataFileRead();
//! Bookings read
void vatsimBookingsRead();
/*!
* Connection status changed
* \param from old status
* \param to new status
* \remarks If I use the enum, adaptor / interface are not created correctly
* \see INetwork::ConnectionStatus
*/
void connectionStatusChanged(uint from, uint to);
//! Text messages received (also private chat messages, rfaio channel messages)
void textMessagesReceived(const BlackMisc::Network::CTextMessageList &textMessages);
public slots:
//! Reload bookings from booking service
virtual void readAtcBookingsFromSource() const = 0;
/*!
* The ATC list with online ATC controllers
* \remarks If I make this &getAtcStations XML is not generated correctly
*/
virtual const BlackMisc::Aviation::CAtcStationList getAtcStationsOnline() const = 0;
//! ATC list, with booked controllers
virtual const BlackMisc::Aviation::CAtcStationList getAtcStationsBooked() const = 0 ;
//! Aircraft list
virtual const BlackMisc::Aviation::CAircraftList getAircraftsInRange() const = 0;
//! Get all users
virtual BlackMisc::Network::CUserList getUsers() const = 0;
//! Users for given callsigns, e.g. for voice room resolution
virtual BlackMisc::Network::CUserList getUsersForCallsigns(const BlackMisc::Aviation::CCallsignList &callsigns) const = 0;
//! User for given callsign, e.g. for text messages
virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
//! Information about other clients
virtual BlackMisc::Network::CClientList getOtherClients() const = 0;
//! Clients for given callsign, e.g. to test/fetch direct aircraft model
virtual BlackMisc::Network::CClientList getOtherClientsForCallsigns(const BlackMisc::Aviation::CCallsignList &callsigns) const = 0;
//! Known voice servers, available when data file was first read
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const = 0;
//! Known FSD servers, available when data file was first read
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const = 0;
/*!
* Connect to Network
* \return messages gererated during connecting
* \see INetwork::LoginMode
*/
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint loginMode) = 0;
/*!
* Disconnect from network
* \return messages generated during disconnecting
*/
virtual BlackMisc::CStatusMessage disconnectFromNetwork() = 0;
//! Network connected?
virtual bool isConnected() const = 0;
//! Text messages (radio and private chat messages)
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) = 0;
//! Send flight plan
virtual void sendFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan) = 0;
//! Load flight plan (from network)
virtual BlackMisc::Aviation::CFlightPlan loadFlightPlanFromNetwork(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
//! Command line was entered
virtual bool parseCommandLine(const QString &commandLine) = 0;
/*!
* Get METAR, if not available request it
* \param airportIcaoCode such as EDDF, KLAX
* \return
*/
virtual BlackMisc::Aviation::CInformationMessage getMetar(const BlackMisc::Aviation::CAirportIcao &airportIcaoCode) = 0;
//! Use the selected COM1/2 frequencies, and get the corresponding voice room for it
virtual BlackMisc::Audio::CVoiceRoomList getSelectedVoiceRooms() const = 0;
//! Use the selected COM1/2 frequencies, and get the corresponding ATC stations for it
virtual BlackMisc::Aviation::CAtcStationList getSelectedAtcStations() const = 0;
//! Request data updates (pilot's frequencies, ATIS, ..)
virtual void requestDataUpdates() = 0;
//! Request ATIS updates (for all stations)
virtual void requestAtisUpdates() = 0;
//! Create dummy ATC stations for performance tests etc.
virtual void testCreateDummyOnlineAtcStations(int number) = 0;
protected:
//! Constructor
IContextNetwork(CRuntimeConfig::ContextMode mode, CRuntime *runtime) : CContext(mode, runtime) {}
};
}
#endif // guard