moonlight-qt/app/backend/nvcomputer.h

93 lines
1.6 KiB
C
Raw Normal View History

#pragma once
#include "nvhttp.h"
#include "nvaddress.h"
#include <QThread>
#include <QReadWriteLock>
#include <QSettings>
#include <QRunnable>
class NvComputer
{
friend class PcMonitorThread;
friend class ComputerManager;
friend class PendingQuitTask;
private:
void sortAppList();
bool updateAppList(QVector<NvApp> newAppList);
bool pendingQuit;
public:
explicit NvComputer(NvHTTP& http, QString serverInfo);
explicit NvComputer(QSettings& settings);
void
setRemoteAddress(QHostAddress);
bool
update(NvComputer& that);
bool
wake();
bool
isReachableOverVpn();
QVector<NvAddress>
2020-02-25 01:44:21 +00:00
uniqueAddresses() const;
void
2020-02-25 01:44:21 +00:00
serialize(QSettings& settings) const;
enum PairState
{
PS_UNKNOWN,
PS_PAIRED,
PS_NOT_PAIRED
};
enum ComputerState
{
CS_UNKNOWN,
CS_ONLINE,
CS_OFFLINE
};
// Ephemeral traits
ComputerState state;
PairState pairState;
NvAddress activeAddress;
2021-07-03 05:00:27 +00:00
uint16_t activeHttpsPort;
int currentGameId;
QString gfeVersion;
QString appVersion;
QVector<NvDisplayMode> displayModes;
int maxLumaPixelsHEVC;
int serverCodecModeSupport;
QString gpuModel;
bool isSupportedServerVersion;
// Persisted traits
NvAddress localAddress;
NvAddress remoteAddress;
NvAddress ipv6Address;
NvAddress manualAddress;
QByteArray macAddress;
QString name;
2020-05-02 01:34:15 +00:00
bool hasCustomName;
QString uuid;
2018-12-22 02:08:07 +00:00
QSslCertificate serverCert;
QVector<NvApp> appList;
// Synchronization
2020-02-25 01:44:21 +00:00
mutable QReadWriteLock lock;
private:
uint16_t externalPort;
};