add terminate action
This commit is contained in:
@ -197,6 +197,12 @@ void reHDD::ThreadUserInput()
|
||||
handleESC();
|
||||
ui->updateTUI(&listDrives, u8SelectedEntry);
|
||||
break;
|
||||
case TUI::UserInput::Terminate:
|
||||
cout << "Terminate" << endl;
|
||||
stopShredAllDrives(&listDrives);
|
||||
sleep(5); // sleep 5 sec
|
||||
std::exit(1); // Terminates main, doesn't wait for threads
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -464,6 +470,34 @@ void reHDD::startShredAllDrives(list<Drive> *plistDrives)
|
||||
mxDrives.unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief stop shred for all drives
|
||||
* \param pointer of list <Drive>* plistDrives
|
||||
* \return void
|
||||
*/
|
||||
void reHDD::stopShredAllDrives(list<Drive> *plistDrives)
|
||||
{
|
||||
list<Drive>::iterator it;
|
||||
mxDrives.lock();
|
||||
for (it = plistDrives->begin(); it != plistDrives->end(); ++it)
|
||||
{
|
||||
|
||||
if (it->state == Drive::SHRED_ACTIVE || it->state == Drive::DELETE_ACTIVE)
|
||||
{
|
||||
it->state = Drive::NONE;
|
||||
Logger::logThis()->info("Abort-Shred-Signal for: " + it->getModelName() + "-" + it->getSerial());
|
||||
// task for drive is running --> remove selection
|
||||
}
|
||||
|
||||
#ifdef LOG_LEVEL_HIGH
|
||||
ostringstream address;
|
||||
address << (void const *)&(*it);
|
||||
Logger::logThis()->info("Started shred (all) for: " + it->getModelName() + "-" + it->getSerial() + " @" + address.str());
|
||||
#endif
|
||||
}
|
||||
mxDrives.unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief print drives with all information
|
||||
* \param pointer of list <Drive>* plistDrives
|
||||
|
@ -237,6 +237,9 @@ enum TUI::UserInput TUI::readUserInput()
|
||||
case 'S':
|
||||
return TUI::UserInput::ShredAll;
|
||||
break;
|
||||
case 'T':
|
||||
return TUI::UserInput::Terminate;
|
||||
break;
|
||||
default:
|
||||
return TUI::UserInput::Undefined;
|
||||
break;
|
||||
@ -482,8 +485,12 @@ WINDOW *TUI::createMenuView(int iXSize, int iYSize, int iXStart, int iYStart, st
|
||||
{
|
||||
string sLineTmp = "Press d for Delete";
|
||||
mvwaddstr(newWindow, u16Line++, (iXSize / 2) - (sLineTmp.size() / 2), sLineTmp.c_str());
|
||||
u16Line++;
|
||||
}
|
||||
|
||||
string sLineTmp = "Press T for terminating reHDD";
|
||||
mvwaddstr(newWindow, u16Line++, (iXSize / 2) - (sLineTmp.size() / 2), sLineTmp.c_str());
|
||||
|
||||
return newWindow;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user