diff --git a/Server/Server.pro.user b/Server/Server.pro.user index 5658946..64437c4 100644 --- a/Server/Server.pro.user +++ b/Server/Server.pro.user @@ -1,10 +1,10 @@ - + EnvironmentId - {383c8e81-c12d-4893-b569-85d0df5882e1} + {928d8d8a-d509-4112-bbd2-631b85ea1f48} ProjectExplorer.Project.ActiveTarget @@ -37,7 +37,6 @@ true true 1 - false true false 0 @@ -46,51 +45,25 @@ 0 8 true - false 1 true true true - *.md, *.MD, Makefile false - true ProjectExplorer.Project.PluginSettings - - true - false - true - true - true - true - - - 0 - true -fno-delayed-template-parsing true - Builtin.BuildSystem - - true - true - Builtin.DefaultTidyAndClazy - 8 - - - - true - ProjectExplorer.Project.Target.0 - Desktop Desktop Qt 6.1.3 MSVC2019 64bit Desktop Qt 6.1.3 MSVC2019 64bit qt.qt6.613.win64_msvc2019_64_kit @@ -98,19 +71,25 @@ 0 0 - 0 - C:\Users\jacek\Documents\ResourceMonitoring\build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Debug - C:/Users/jacek/Documents/ResourceMonitoring/build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Debug + C:/Users/user/source/repos/ResourceMonitoring/build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Debug true QtProjectManager.QMakeBuildStep + true + false - + false + false true Qt4ProjectManager.MakeStep + + false + + + false 2 Build @@ -121,7 +100,11 @@ true Qt4ProjectManager.MakeStep + + true clean + + false 1 Clean @@ -130,25 +113,31 @@ 2 false - Debug Qt4ProjectManager.Qt4BuildConfiguration 2 - C:\Users\jacek\Documents\ResourceMonitoring\build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Release - C:/Users/jacek/Documents/ResourceMonitoring/build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Release + C:/Users/user/source/repos/ResourceMonitoring/build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Release true QtProjectManager.QMakeBuildStep + false + false - + false + true true Qt4ProjectManager.MakeStep + + false + + + false 2 Build @@ -159,7 +148,11 @@ true Qt4ProjectManager.MakeStep + + true clean + + false 1 Clean @@ -168,27 +161,31 @@ 2 false - Release Qt4ProjectManager.Qt4BuildConfiguration 0 - 0 - 0 - C:\Users\jacek\Documents\ResourceMonitoring\build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Profile - C:/Users/jacek/Documents/ResourceMonitoring/build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Profile + C:/Users/user/source/repos/ResourceMonitoring/build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Profile true QtProjectManager.QMakeBuildStep + true + false - + true + true true Qt4ProjectManager.MakeStep + + false + + + false 2 Build @@ -199,7 +196,11 @@ true Qt4ProjectManager.MakeStep + + true clean + + false 1 Clean @@ -208,13 +209,10 @@ 2 false - - Profile + Profilowanie Qt4ProjectManager.Qt4BuildConfiguration 0 - 0 - 0 3 @@ -225,25 +223,83 @@ ProjectExplorer.BuildSteps.Deploy 1 - - false ProjectExplorer.DefaultDeployConfiguration 1 + + dwarf + + cpu-cycles + + + 250 + + -e + cpu-cycles + --call-graph + dwarf,4096 + -F + 250 + + -F true + 4096 + false + false + 1000 + true + + false + false + false + false + true + 0.01 + 10 + true + kcachegrind + 1 + 25 + + 1 true - + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/jacek/Documents/ResourceMonitoring/Server/Server.pro - C:/Users/jacek/Documents/ResourceMonitoring/Server/Server.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/user/source/repos/ResourceMonitoring/Server/Server.pro + C:/Users/user/source/repos/ResourceMonitoring/Server/Server.pro + + false + false true true + false false true + + C:/Users/user/source/repos/ResourceMonitoring/build-Server-Desktop_Qt_6_1_3_MSVC2019_64bit-Debug 1 diff --git a/Server/mainwindow.cpp b/Server/mainwindow.cpp index 7586c38..fd22aff 100644 --- a/Server/mainwindow.cpp +++ b/Server/mainwindow.cpp @@ -126,7 +126,7 @@ void MainWindow::on_listWidget_itemDoubleClicked(QListWidgetItem *item) // resourcesSocketMap foreach (QTcpSocket* sock, resourcesSocketMap.keys()) if (QString::fromStdString(resourcesSocketMap.value(sock)->getHostName()) == item->text() ){ - SelectedClient* c = new SelectedClient(resourcesSocketMap.value(sock)); + SelectedClient* c = new SelectedClient(this, resourcesSocketMap.value(sock)); c->show(); } } diff --git a/Server/resources.cpp b/Server/resources.cpp index 1a72891..b6b1d52 100644 --- a/Server/resources.cpp +++ b/Server/resources.cpp @@ -3,11 +3,11 @@ void Resources::updateLists() { cpuLoadList.push_front(cpuLoad); - cpuLoadList.pop_back(); + cpuLoadList.pop_back(); diskFreeSpacePercentageList.push_front(diskFreeSpacePercentage); - diskFreeSpacePercentageList.pop_back(); + diskFreeSpacePercentageList.pop_back(); memoryLoadList.push_front(memoryLoad); - memoryLoadList.pop_back(); + memoryLoadList.pop_back(); } Resources::Resources() diff --git a/Server/selectedclient.cpp b/Server/selectedclient.cpp index 652a61f..d7f7ea4 100644 --- a/Server/selectedclient.cpp +++ b/Server/selectedclient.cpp @@ -1,3 +1,4 @@ +#include "mainwindow.h" #include "selectedclient.h" #include "ui_selectedclient.h" @@ -8,53 +9,85 @@ SelectedClient::SelectedClient(QWidget *parent) : ui->setupUi(this); } -SelectedClient::SelectedClient(Resources* r) : QDialog(nullptr), +SelectedClient::SelectedClient(MainWindow* mainWindow, Resources* r) : QDialog(nullptr), ui(new Ui::SelectedClient) { resources = r; ui->setupUi(this); + charts[0]->setTitle("Cpu load"); + charts[1]->setTitle("Free disk space"); + charts[2]->setTitle("Free memory"); + + refreshView(); + QObject::connect(mainWindow, &MainWindow::newMessage, this, &SelectedClient::refreshView); +} + +SelectedClient::~SelectedClient() +{ + delete ui; +} + +void SelectedClient::refreshView() { + ui->labelHost->setText(QString::fromStdString(resources->getHostName())); ui->labelUser->setText(QString::fromStdString(resources->getUserName())); ui->labelCpuLoad->setText(QString::number(resources->getCpuLoad()) + "%"); ui->labelDisk->setText(QString::number(resources->getDiskFreeSpacePercentage())+ "%"); ui->labelMemory->setText(QString::number(resources->getTotalMemory())); - ui->labelUsedMemory->setText(QString::number(1.0*resources->getMemoryLoad()/resources->getTotalMemory()) + "%"); - int iter = 1; - for (float cpuLoad : resources->getCpuLoadList()){ - lineSeries[0]->append(iter, cpuLoad); - iter++; - } - iter = 1; - for (float diskSpace : resources->getDiskFreeSpacePercentageList()){ - lineSeries[1]->append(iter, diskSpace); - iter++; - } - iter = 1; - for (float memoryLoad : resources->getMemoryLoadListReference()){ - lineSeries[2]->append(iter, 1.0 * memoryLoad/resources->getTotalMemory()); - iter++; + ui->labelUsedMemory->setText(QString::number(100.0*resources->getMemoryLoad()/resources->getTotalMemory()) + "%"); + + refreshFloatChart(ui->graphicsView_chart0, lineSeries[0], charts[0], resources->getCpuLoadList()); + refreshFloatChart(ui->graphicsView_chart1, lineSeries[1], charts[1], resources->getDiskFreeSpacePercentageList()); + refreshMemoryChart(ui->graphicsView_chart2, lineSeries[2], charts[2], resources->getMemoryLoadListReference()); +} + +void SelectedClient::refreshFloatChart(QChartView* chartView, QLineSeries* lineSeries, QChart* chart, std::list dataList) { + +// QValueAxis *percentageAxisY = new QValueAxis(); +// percentageAxisY->setRange(0,100); +// chart->setAxisY(percentageAxisY); + + lineSeries->clear(); + int iter = 30; + for (float data : dataList){ + lineSeries->append(iter, data); + iter--; } - charts[0]->setTitle("Cpu load"); - charts[1]->setTitle("Free disk space"); - charts[2]->setTitle("Free memory"); - for (int i = 0; i < 3; i++) { - charts[i]->addSeries(lineSeries[i]); - charts[i]->legend()->hide(); - charts[i]->createDefaultAxes(); + + refreshChart(chartView, chart, lineSeries); +} + + +void SelectedClient::refreshMemoryChart(QChartView* chartView, QLineSeries* lineSeries, QChart* chart, std::list dataList) { + +// QValueAxis *memoryAxisY = new QValueAxis(); +// memoryAxisY->setRange(0, resources->getTotalMemory()); + +// chart->setAxisY(memoryAxisY); + + + lineSeries->clear(); + int iter = 30; + for (unsigned long long data : dataList){ + lineSeries->append(iter, 100.0 * data/resources->getTotalMemory()); + iter--; } - ui->graphicsView_chart0->setChart(charts[0]); - ui->graphicsView_chart1->setChart(charts[1]); - ui->graphicsView_chart2->setChart(charts[2]); - ui->graphicsView_chart0->setRenderHint(QPainter::Antialiasing); - ui->graphicsView_chart1->setRenderHint(QPainter::Antialiasing); - ui->graphicsView_chart2->setRenderHint(QPainter::Antialiasing); + + refreshChart(chartView, chart, lineSeries); } -SelectedClient::~SelectedClient() -{ - delete ui; +void SelectedClient::refreshChart(QChartView* chartView, QChart* chart, QLineSeries* lineSeries) { + + chart->addSeries(lineSeries); + chart->legend()->hide(); + chart->createDefaultAxes(); + + chartView->setChart(chart); + chartView->setRenderHint(QPainter::Antialiasing); + } + void SelectedClient::on_pushButtonProcesses_clicked() { // resourcesSocketMap diff --git a/Server/selectedclient.h b/Server/selectedclient.h index c2310d0..655cce9 100644 --- a/Server/selectedclient.h +++ b/Server/selectedclient.h @@ -1,7 +1,9 @@ #ifndef SELECTEDCLIENT_H #define SELECTEDCLIENT_H +#include #include +#include "mainwindow.h" #include "resources.h" #include "runningprocesses.h" #include @@ -17,7 +19,7 @@ class SelectedClient : public QDialog public: explicit SelectedClient(QWidget *parent = nullptr); - SelectedClient(Resources* r); + SelectedClient(MainWindow* mainWindow, Resources* r); ~SelectedClient(); private slots: @@ -28,6 +30,10 @@ private slots: Resources* resources; QLineSeries *lineSeries[3] = {new QLineSeries, new QLineSeries, new QLineSeries}; QChart *charts[3] = {new QChart(), new QChart(), new QChart()}; + void refreshView(); + void refreshFloatChart(QChartView* chartView,QLineSeries* lineSeries, QChart* chart, std::list dataList); + void refreshMemoryChart(QChartView* chartView, QLineSeries *lineSeries, QChart *chart, std::list dataList); + void refreshChart(QChartView *chartView, QChart *chart, QLineSeries *lineSeries); }; #endif // SELECTEDCLIENT_H diff --git a/sources/ResourceSerializer.cpp b/sources/ResourceSerializer.cpp index f545e75..5f072f9 100644 --- a/sources/ResourceSerializer.cpp +++ b/sources/ResourceSerializer.cpp @@ -4,7 +4,7 @@ void ResourceSerializer::updateResources() { resources["hostName"] = getHostName(); resources["userName"] = getUserName(); - resources["cpuLoad"] = GetCPULoad(); + resources["cpuLoad"] = GetCPULoad() * 100; resources["totalMemory"] = getTotalPhysicalMemory(); resources["memoryLoad"] = getPhysicalMemoryLoad(); resources["diskFreeSpacePercentage"] = getDiskFreeSpacePercentage(); diff --git a/sources/main.cpp b/sources/main.cpp index 893f1da..1e58ee8 100644 --- a/sources/main.cpp +++ b/sources/main.cpp @@ -27,6 +27,7 @@ int main(){ std::string ipAddress; std::string port; + const DWORD FREQUENCY = 1000; WSADATA wsaData; SOCKET ConnectSocket = INVALID_SOCKET; @@ -111,7 +112,7 @@ int main(){ printf("Connection closed\n"); else printf("send failed with error: %d\n", WSAGetLastError()); - Sleep(10000); + Sleep(FREQUENCY); } while (iResult > 0);