Skip to content
Extraits de code Groupes Projets
Valider 17460a94 rédigé par Romain DERRE's avatar Romain DERRE
Parcourir les fichiers

ça ne lague plus !!!!!!!!!

parent 656fe443
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -7,14 +7,12 @@ Controller::Controller(MainWindow *window) : eltCollection(), genStatus(), main(
eltCollection.insertColumns(0,8);
//QThread* thread = QThread::create([this]{ eltCollection.update();});
//thread->start();
//QElapsedTimer t;
//t.start();
main->set_task(&eltCollection);
//qDebug() << "setModel : " << t.elapsed() << "milliseconds";
QTimer *timer = new QTimer();
timer->connect(timer, SIGNAL(timeout()), this , SLOT(update()));
timer->start(5000);
timer->start(1000);
}
......@@ -25,8 +23,9 @@ void Controller::update(){
main->set_task(&elm);
//QElapsedTimer timer;
//timer.start();
eltCollection.update();
//qDebug() << "update : " << timer.elapsed() << "milliseconds";
//timer.start();
main->set_task(&eltCollection);
......
......@@ -38,7 +38,7 @@ int ElementsTableModel::rowCount(const QModelIndex &parent) const
if (parent.isValid())
return 0;
return taskMap.size();
return taskVector.size();
// FIXME: Implement me!
}
......@@ -67,26 +67,29 @@ QVariant ElementsTableModel::data(const QModelIndex &index, int role) const
//it += row;
//Task * task = it.value();
int pid = pidVector.at(row);
Task task = taskMap.value(pid);
//int pid = pidVector.at(row);
//Task task = taskMap.value(pid);
Task* task = taskVector.value(row);
//qDebug() << task->print(" ");
switch (col) {
case 0:
return QVariant(task.getPID());
return QVariant(task->getPID());
case 1:
return QVariant(task.get_name());
return QVariant(task->get_name());
case 2:
return QVariant(task.get_status());
return QVariant(task->get_status());
case 3:
return QVariant(task.getPPID());
return QVariant(task->getPPID());
case 4:
return QVariant(task.getUser());
return QVariant(task->getUser());
case 5:
return QVariant(QString::number(task.getCPU())+"%");
return QVariant(QString::number(task->getCPU())+"%");
case 6:
return QVariant(QString::number(task.getMem())+"%");
return QVariant(QString::number(task->getMem())+"%");
case 7:
return QVariant(task.getUtime_s());
return QVariant(task->getUtime_s());
default:
break;
......@@ -98,20 +101,20 @@ QVariant ElementsTableModel::data(const QModelIndex &index, int role) const
void ElementsTableModel::insertTask(Task &task, int key){
void ElementsTableModel::insertTask(Task* task){
beginInsertRows(QModelIndex(), rowCount(), rowCount());
taskMap.insert(key, task);
pidVector.append(key);
//qDebug() << "insert " << key << ";" + task.print(" ");
taskVector.append(task);
//pidVector.append(key);
//qDebug() << "insert " << task->print(" ");
endInsertRows();
}
void ElementsTableModel::removeTask(int key){
int row = pidVector.indexOf(key);
beginRemoveRows(QModelIndex(), row, row);
taskMap.remove(key);
pidVector.remove(row);
//qDebug() << "remove " << key;
void ElementsTableModel::removeTask(Task* task){
//int row = pidVector.indexOf(key);
beginRemoveRows(QModelIndex(), rowCount(), rowCount());
taskVector.removeOne(task);
//pidVector.remove(row);
//qDebug() << "remove " << task->print();
endRemoveRows();
}
......@@ -150,7 +153,7 @@ bool ElementsTableModel::removeColumns(int column, int count, const QModelIndex
void ElementsTableModel::update()
{
//QElapsedTimer timer;
QElapsedTimer timer;
//timer.start();
system("ls /proc | grep '[0-9]' > .listT");
//qDebug() << "write tasks list :" << timer.elapsed() << "milliseconds";
......@@ -160,54 +163,63 @@ void ElementsTableModel::update()
}
QTextStream in(&task_list);
//timer.start();
timer.start();
QMap<int, Task>::iterator it;
for (it = taskMap.begin(); it != taskMap.end(); ++it) it.value().setExist(false);
//QVector<Task*>::iterator it;
for (int i =0; i < taskVector.size(); ++i)
{
taskVector.value(i)->setExist(false);
}
//qDebug() << "fold map :" << timer.elapsed() << "milliseconds";
int pid;
int i;
bool stop;
while(!in.atEnd()) {
pid = in.readLine().toInt();
//qDebug() << pid;
//Task* test = find(pid);
QMap<int, Task>::iterator it = taskMap.find(pid);
//QMap<int, Task>::iterator it = taskMap.find(pid);
//Task& test = it.value();
//qDebug() << "search in map :" << timer.elapsed() << "milliseconds";
//qDebug() << test.print("|");
if (it == taskMap.end())
//QVector<Task*>::iterator it;
i = 0;
stop = false;
while (!stop && i < taskVector.size())
{
//timer.start();
Task t(pid);
//qDebug() << "1 task created :" << timer.elapsed() << "milliseconds";
if (t.isExist())
Task* temp = taskVector.value(i);
if (temp->getPID() == pid)
{
temp->update();
if (!temp->isExist())
{
//timer.start();
insertTask(t, pid);
//qDebug() << "1 task inserted :" << timer.elapsed() << "milliseconds";
removeTask(temp);
//qDebug() << "1 task removed :" << timer.elapsed() << "milliseconds";
}
stop = true;
}
++i;
}
else
if (!stop)
{
it->update();
if (!it->isExist())
Task* t = new Task(pid);
if (t->isExist())
{
//timer.start();
removeTask(pid);
//qDebug() << "1 task removed :" << timer.elapsed() << "milliseconds";
insertTask(t);
//qDebug() << "1 task inserted :" << timer.elapsed() << "milliseconds";
}
}
//qDebug() << "search in map :" << timer.elapsed() << "milliseconds";
//qDebug() << test.print("|");
}
task_list.close();
......@@ -223,8 +235,8 @@ void ElementsTableModel::writeCSV(QFile file)
{
QTextStream stream( &file );
stream << "PID , name , status , PPID , user , CPU , memory , uptime" << endl;
foreach (Task t, taskMap) {
stream << t.print(" , ") << endl;
foreach (Task* t, taskVector) {
stream << t->print(" , ") << endl;
}
//for (QMap<int, Task>::const_iterator it = taskMap.cbegin() ; taskMap.cend() ; ++it)
......
......@@ -32,8 +32,8 @@ public:
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
void insertTask(Task &task, int key);
void removeTask(int key);
void insertTask(Task* task);
void removeTask(Task* task);
// Add data:
......@@ -48,8 +48,8 @@ public:
private:
QMap<int, Task> taskMap;
QVector<int> pidVector;
//QMap<int, Task> taskMap;
QVector<Task*> taskVector;
QFile task_list;
QMutex mutex;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter