blob: 82641cda30aa10c7120ded02fb622a821d37cf62 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
// Copyright (C) 2021 The Qt Company Ltd.
// Copyright (C) 2019 Luxoft Sweden AB
// Copyright (C) 2018 Pelagicore AG
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#pragma once
#include <QtCore/QAtomicInteger>
#include <QtCore/QObject>
#include <QtCore/QPointer>
#include <QtCore/QThread>
#include <QtCore/QVariant>
#include <QtAppManCommon/global.h>
#include <QtAppManManager/amnamespace.h>
#include <QtAppManManager/application.h>
#include <QtAppManMonitor/processreader.h>
QT_BEGIN_NAMESPACE_AM
// It's assumed that all ProcessStatus instances are created from the same thread (most likely the main one).
class ProcessStatus : public QObject
{
Q_OBJECT
Q_CLASSINFO("AM-QmlType", "QtApplicationManager.SystemUI/ProcessStatus 2.0")
Q_PROPERTY(QString applicationId READ applicationId WRITE setApplicationId NOTIFY applicationIdChanged)
Q_PROPERTY(qint64 processId READ processId NOTIFY processIdChanged)
Q_PROPERTY(qreal cpuLoad READ cpuLoad NOTIFY cpuLoadChanged)
Q_PROPERTY(QVariantMap memoryVirtual READ memoryVirtual NOTIFY memoryReportingChanged)
Q_PROPERTY(QVariantMap memoryRss READ memoryRss NOTIFY memoryReportingChanged)
Q_PROPERTY(QVariantMap memoryPss READ memoryPss NOTIFY memoryReportingChanged)
Q_PROPERTY(bool memoryReportingEnabled READ isMemoryReportingEnabled WRITE setMemoryReportingEnabled
NOTIFY memoryReportingEnabledChanged)
Q_PROPERTY(QStringList roleNames READ roleNames CONSTANT)
public:
ProcessStatus(QObject *parent = nullptr);
~ProcessStatus();
QStringList roleNames() const;
Q_INVOKABLE void update();
qint64 processId() const;
QString applicationId() const;
void setApplicationId(const QString &appId);
qreal cpuLoad();
QVariantMap memoryVirtual() const;
QVariantMap memoryRss() const;
QVariantMap memoryPss() const;
bool isMemoryReportingEnabled() const;
void setMemoryReportingEnabled(bool enabled);
signals:
void applicationIdChanged(const QString &applicationId);
void processIdChanged(qint64 processId);
void cpuLoadChanged();
void memoryReportingChanged(const QVariantMap &memoryVirtual, const QVariantMap &memoryRss,
const QVariantMap &memoryPss);
void memoryReportingEnabledChanged(bool enabled);
private slots:
void onRunStateChanged(Am::RunState state);
private:
void fetchReadings();
void determinePid();
QString m_appId;
qint64 m_pid = 0;
qreal m_cpuLoad = 0;
QVariantMap m_memoryVirtual;
QVariantMap m_memoryRss;
QVariantMap m_memoryPss;
bool m_memoryReportingEnabled = true;
QPointer<Application> m_application;
bool m_pendingUpdate = false;
ProcessReader *m_reader;
static QThread *m_workerThread;
static int m_instanceCount;
};
QT_END_NAMESPACE_AM
|