#pragma once #include "nvhttp.h" #include #include #include #include class NvComputer { friend class PcMonitorThread; friend class ComputerManager; friend class PendingQuitTask; private: void sortAppList(); bool updateAppList(QVector newAppList); bool pendingQuit; public: explicit NvComputer(QString address, QString serverInfo, QSslCertificate serverCert); explicit NvComputer(QSettings& settings); bool update(NvComputer& that); bool wake(); bool isReachableOverVpn(); QVector uniqueAddresses() const; void 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 displayModes; int maxLumaPixelsHEVC; int serverCodecModeSupport; QString gpuModel; bool isSupportedServerVersion; // Persisted traits QString localAddress; QString remoteAddress; QString ipv6Address; QString manualAddress; QByteArray macAddress; QString name; bool hasCustomName; QString uuid; QSslCertificate serverCert; QVector appList; // Synchronization mutable QReadWriteLock lock; };