moonlight-qt/app/backend/nvcomputer.h

84 lines
1.5 KiB
C
Raw Normal View History

#pragma once
#include "nvhttp.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:
2018-12-21 18:08:07 -08:00
explicit NvComputer(QString address, QString serverInfo, QSslCertificate serverCert);
explicit NvComputer(QSettings& settings);
bool
update(NvComputer& that);
bool
wake();
bool
isReachableOverVpn();
QVector<QString>
2020-02-24 17:44:21 -08:00
uniqueAddresses() const;
void
2020-02-24 17:44:21 -08: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;
QString activeAddress;
int currentGameId;
QString gfeVersion;
QString appVersion;
QVector<NvDisplayMode> displayModes;
int maxLumaPixelsHEVC;
int serverCodecModeSupport;
QString gpuModel;
// Persisted traits
QString localAddress;
QString remoteAddress;
QString ipv6Address;
QString manualAddress;
QByteArray macAddress;
QString name;
2020-05-01 18:34:15 -07:00
bool hasCustomName;
QString uuid;
2018-12-21 18:08:07 -08:00
QSslCertificate serverCert;
QVector<NvApp> appList;
// Synchronization
2020-02-24 17:44:21 -08:00
mutable QReadWriteLock lock;
};