#include <lib/components/file_eraser.h>
+#include <lib/base/ioprio.h>
#include <lib/base/eerror.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
eBackgroundFileEraser *eBackgroundFileEraser::instance;
eBackgroundFileEraser::eBackgroundFileEraser()
- :messages(this,1), stop_thread_timer(this)
+ :messages(this,1), stop_thread_timer(eTimer::create(this))
{
if (!instance)
instance=this;
CONNECT(messages.recv_msg, eBackgroundFileEraser::gotMessage);
- CONNECT(stop_thread_timer.timeout, eBackgroundFileEraser::idle);
+ CONNECT(stop_thread_timer->timeout, eBackgroundFileEraser::idle);
}
void eBackgroundFileEraser::idle()
messages.send(Message::quit);
if (instance==this)
instance=0;
+ kill(); // i dont understand why this is needed .. in ~eThread::eThread is a kill() to..
}
void eBackgroundFileEraser::thread()
{
hasStarted();
+
nice(5);
+
+ setIoPrio(IOPRIO_CLASS_BE, 7);
+
reset();
+
runLoop();
- stop_thread_timer.stop();
+
+ stop_thread_timer->stop();
}
void eBackgroundFileEraser::erase(const char *filename)
if (filename)
{
char buf[255];
- snprintf(buf, 255, "%s.$$$", filename);
+ snprintf(buf, 255, "%s.del", filename);
if (rename(filename, buf)<0)
;/*perror("rename file failed !!!");*/
else
eDebug("file %s erased", msg.filename);
free((char*)msg.filename);
}
- stop_thread_timer.start(2000, true); // stop thread in two seconds
+ stop_thread_timer->start(1000, true); // stop thread in one seconds
break;
case Message::quit:
quit(0);