diff options
author | Robert Griebl <robert.griebl@pelagicore.com> | 2019-05-07 13:10:41 +0200 |
---|---|---|
committer | Robert Griebl <robert.griebl@pelagicore.com> | 2019-05-28 00:22:25 +0200 |
commit | 721e1ca52f08b89b2abb8bcb224d7f226f059244 (patch) | |
tree | 9a1a3ce5d3e8182a4eb90ab16f81610350a21018 /src/manager-lib/systemreader.h | |
parent | 26f1dde95210d6a1971d194d2f15dace7c2f1efb (diff) |
Untangle the broken monitoring dependencies
After the last refactoring of the monitoring components, we ended up with
a monitor_lib that pulled in nearly all of the other AM components. The end
result was that the qml runtime had all the appman system-ui code compiled in
as well.
Downgraded the monitor_lib to just read values from the system and moved the
QML API classes to shared_main_lib, manager_lib and main_lib respectively.
Change-Id: Ic205153c6d8c221793b0f2546b2f31f4e1ede53d
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Diffstat (limited to 'src/manager-lib/systemreader.h')
-rw-r--r-- | src/manager-lib/systemreader.h | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/src/manager-lib/systemreader.h b/src/manager-lib/systemreader.h deleted file mode 100644 index fe7ff2bf..00000000 --- a/src/manager-lib/systemreader.h +++ /dev/null @@ -1,216 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2019 Luxoft Sweden AB -** Copyright (C) 2018 Pelagicore AG -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Luxoft Application Manager. -** -** $QT_BEGIN_LICENSE:LGPL-QTAS$ -** Commercial License Usage -** Licensees holding valid commercial Qt Automotive Suite licenses may use -** this file in accordance with the commercial license agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and The Qt Company. For -** licensing terms and conditions see https://www.qt.io/terms-conditions. -** For further information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -** SPDX-License-Identifier: LGPL-3.0 -** -****************************************************************************/ - -#pragma once - -#include <QByteArray> -#include <QPair> -#include <QElapsedTimer> -#include <QObject> -#include <QtAppManCommon/global.h> - -#if defined(Q_OS_LINUX) -# include <QScopedPointer> -# include <QtAppManManager/sysfsreader.h> -QT_FORWARD_DECLARE_CLASS(QSocketNotifier) -#endif - -QT_BEGIN_NAMESPACE_AM - -class CpuReader -{ -public: - CpuReader(); - qreal readLoadValue(); - -private: - qint64 m_lastIdle = 0; - qint64 m_lastTotal = 0; - qreal m_load = 1; -#if defined(Q_OS_LINUX) - static QScopedPointer<SysFsReader> s_sysFs; -#endif - Q_DISABLE_COPY(CpuReader) -}; - -class GpuVendor { -public: - enum Vendor { - Undefined = 0, // didn't try to determine the vendor yet - Unsupported, - Intel, - Nvidia - }; - static Vendor get(); -private: - static void fetch(); - static Vendor s_vendor; -}; - -class GpuTool; - -class GpuReader -{ -public: - GpuReader(); - void setActive(bool enabled); - bool isActive() const; - qreal readLoadValue(); - -private: -#if defined(Q_OS_LINUX) - static GpuTool *s_gpuToolProcess; -#endif - Q_DISABLE_COPY(GpuReader) -}; - - -class MemoryReader -{ -public: - MemoryReader(); -#if defined(Q_OS_LINUX) - explicit MemoryReader(const QString &groupPath); - quint64 groupLimit(); -#endif - quint64 totalValue() const; - quint64 readUsedValue() const; - -private: - static quint64 s_totalValue; -#if defined(Q_OS_LINUX) - QScopedPointer<SysFsReader> m_sysFs; - const QString m_groupPath; -#elif defined(Q_OS_MACOS) || defined(Q_OS_IOS) - static int s_pageSize; -#endif - Q_DISABLE_COPY(MemoryReader) -}; - -class IoReader -{ -public: - IoReader(const char *device); - ~IoReader(); - qreal readLoadValue(); - -private: -#if defined(Q_OS_LINUX) - QElapsedTimer m_lastCheck; - qint64 m_lastIoTime = 0; - qreal m_load = 1; - QScopedPointer<SysFsReader> m_sysFs; -#endif - Q_DISABLE_COPY(IoReader) -}; - -class MemoryThreshold : public QObject -{ - Q_OBJECT - -public: - MemoryThreshold(const QList<qreal> &thresholds); - ~MemoryThreshold(); - QList<qreal> thresholdPercentages() const; - - bool isEnabled() const; - bool setEnabled(bool enabled); -#if defined(Q_OS_LINUX) - bool setEnabled(bool enabled, const QString &groupPath, MemoryReader *reader); -#endif - -signals: - void thresholdTriggered(); - -private: - bool m_initialized = false; - bool m_enabled = false; - QList<qreal> m_thresholds; - -#if defined(Q_OS_LINUX) -private slots: - void readEventFd(); - -private: - int m_eventFd = -1; - int m_controlFd = -1; - int m_usageFd = -1; - QSocketNotifier *m_notifier = nullptr; -#endif -}; - -class MemoryWatcher : public QObject -{ - Q_OBJECT -public: - MemoryWatcher(QObject *parent); - - void setThresholds(qreal warning, qreal critical); - bool startWatching(const QString &groupPath = QString()); - void checkMemoryConsumption(); - -signals: - void memoryLow(); - void memoryCritical(); - -private: - qreal m_warning = 75.0; - qreal m_critical = 90.0; - qreal m_memLimit; - bool hasMemoryLowWarning = false; - bool hasMemoryCriticalWarning = false; - QScopedPointer<MemoryThreshold> m_threshold; - QScopedPointer<MemoryReader> m_reader; -}; - -#if defined(Q_OS_LINUX) -// Parses the file /proc/$PID/cgroup, returning a map groupName->path -// eg: map["memory"] == "/user.slice" -QMap<QByteArray, QByteArray> fetchCGroupProcessInfo(qint64 pid); - -// Where the filesystem root directory is located. This exists solely to enable testing. -// In production it's naturally "/" -extern QString g_systemRootDir; -#endif - -QT_END_NAMESPACE_AM -// We mean it. Dummy comment since syncqt needs this also for completely private Qt modules. |