kill shred thread after abort or offline drive
This commit is contained in:
parent
c6a8fd861d
commit
ec300d7c75
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
echo "starting SHRED DUMMY"
|
echo "starting SHRED DUMMY"
|
||||||
|
|
||||||
for i in {0..100..20}
|
for i in {0..100..10}
|
||||||
do
|
do
|
||||||
echo "DUMMY shred $i%"
|
echo "DUMMY shred $i%"
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
|
@ -182,7 +182,7 @@ void reHDD::filterNewDrives(vector <Drive>* pvecOldDrives, vector <Drive>* pvecN
|
||||||
bOldDriveIsOffline = false;
|
bOldDriveIsOffline = false;
|
||||||
// copy old drive instance date in new instance
|
// copy old drive instance date in new instance
|
||||||
itNew->state = itOld->state; //copy state
|
itNew->state = itOld->state; //copy state
|
||||||
itNew->setTaskPercentage(itOld->getTaskPercentage()); //copy percentage
|
itNew->setTaskPercentage(itOld->getTaskPercentage()); //copy percentage
|
||||||
itNew->bWasDeleteted = itOld->bWasDeleteted; //copy finished task delete
|
itNew->bWasDeleteted = itOld->bWasDeleteted; //copy finished task delete
|
||||||
itNew->bWasShredded = itOld->bWasShredded; //copy finished task shred
|
itNew->bWasShredded = itOld->bWasShredded; //copy finished task shred
|
||||||
}
|
}
|
||||||
|
@ -192,6 +192,7 @@ void reHDD::filterNewDrives(vector <Drive>* pvecOldDrives, vector <Drive>* pvecN
|
||||||
{
|
{
|
||||||
//cout << "offline drive found: " << itOld->getPath() << endl;
|
//cout << "offline drive found: " << itOld->getPath() << endl;
|
||||||
//TODO kill task thread if running
|
//TODO kill task thread if running
|
||||||
|
itOld->state = Drive::NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,15 +35,22 @@ void Shred::shredDrive(Drive* drive, int* fdInformPipeWrite)
|
||||||
|
|
||||||
while ((getline(&cLine, &len, shredCmdOutput)) != -1)
|
while ((getline(&cLine, &len, shredCmdOutput)) != -1)
|
||||||
{
|
{
|
||||||
string sLine = string(cLine);
|
if(drive->state == Drive::SHRED_ACTIVE)
|
||||||
string search("%");
|
|
||||||
size_t found = sLine.find(search);
|
|
||||||
if (found!=string::npos)
|
|
||||||
{
|
{
|
||||||
sLine.erase(0, sLine.find("%")-3);
|
string sLine = string(cLine);
|
||||||
sLine.erase(std::remove(sLine.begin(), sLine.end(), '\n'), sLine.end());
|
string search("%");
|
||||||
drive->setTaskPercentage(stoi(sLine));
|
size_t found = sLine.find(search);
|
||||||
write(*fdInformPipeWrite, "A",1);
|
if (found!=string::npos)
|
||||||
|
{
|
||||||
|
sLine.erase(0, sLine.find("%")-3);
|
||||||
|
sLine.erase(std::remove(sLine.begin(), sLine.end(), '\n'), sLine.end());
|
||||||
|
drive->setTaskPercentage(stoi(sLine));
|
||||||
|
write(*fdInformPipeWrite, "A",1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return; //end shredding task
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(shredCmdOutput);
|
fclose(shredCmdOutput);
|
||||||
|
|
|
@ -67,12 +67,15 @@ void TUI::updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry)
|
||||||
systemview=createSystemStats((int)(stdscrX/3), 10, (stdscrY-11));
|
systemview=createSystemStats((int)(stdscrX/3), 10, (stdscrY-11));
|
||||||
wrefresh(systemview);
|
wrefresh(systemview);
|
||||||
|
|
||||||
|
delwin(detailview);
|
||||||
|
|
||||||
vector <Drive>::iterator it;
|
vector <Drive>::iterator it;
|
||||||
for (it = pvecDrives->begin(); it != pvecDrives->end(); ++it)
|
for (it = pvecDrives->begin(); it != pvecDrives->end(); ++it)
|
||||||
{
|
{
|
||||||
string sModelFamily = it->getModelFamily();
|
string sModelFamily = it->getModelFamily();
|
||||||
string sModelName = it->getModelName();
|
string sModelName = it->getModelName();
|
||||||
string sCapacity = it->sCapacityToText();
|
string sCapacity = it->sCapacityToText();
|
||||||
|
string sState = " ";
|
||||||
|
|
||||||
bool bSelectedEntry = false;
|
bool bSelectedEntry = false;
|
||||||
|
|
||||||
|
@ -82,7 +85,6 @@ void TUI::updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry)
|
||||||
displaySelectedDrive(pvecDrives->at(i32SelectedEntry), stdscrX, stdscrY);
|
displaySelectedDrive(pvecDrives->at(i32SelectedEntry), stdscrX, stdscrY);
|
||||||
}
|
}
|
||||||
|
|
||||||
string sState = " ";
|
|
||||||
|
|
||||||
switch (it->state)
|
switch (it->state)
|
||||||
{
|
{
|
||||||
|
@ -298,7 +300,6 @@ WINDOW* TUI::createSystemStats(int iXSize, int iYSize, int iYStart)
|
||||||
|
|
||||||
WINDOW* TUI::createMenuView(int iXSize, int iYSize, int iXStart, int iYStart, struct MenuState menustate)
|
WINDOW* TUI::createMenuView(int iXSize, int iYSize, int iXStart, int iYStart, struct MenuState menustate)
|
||||||
{
|
{
|
||||||
|
|
||||||
WINDOW *newWindow;
|
WINDOW *newWindow;
|
||||||
newWindow = newwin(iYSize, iXSize, iYStart, iXStart);
|
newWindow = newwin(iYSize, iXSize, iYStart, iXStart);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue