1 #include <lib/components/file_eraser.h>
2 #include <lib/base/eerror.h>
3 #include <lib/base/init.h>
4 #include <lib/base/init_num.h>
10 eBackgroundFileEraser *eBackgroundFileEraser::instance;
12 eBackgroundFileEraser::eBackgroundFileEraser()
13 :messages(this,1), stop_thread_timer(this)
17 CONNECT(messages.recv_msg, eBackgroundFileEraser::gotMessage);
18 CONNECT(stop_thread_timer.timeout, eBackgroundFileEraser::idle);
21 void eBackgroundFileEraser::idle()
26 eBackgroundFileEraser::~eBackgroundFileEraser()
28 messages.send(Message::quit);
33 void eBackgroundFileEraser::thread()
39 stop_thread_timer.stop();
42 void eBackgroundFileEraser::erase(const char *filename)
47 snprintf(buf, 255, "%s.$$$", filename);
48 if (rename(filename, buf)<0)
49 ;/*perror("rename file failed !!!");*/
52 messages.send(Message(Message::erase, strdup(buf)));
58 void eBackgroundFileEraser::gotMessage(const Message &msg )
65 if ( ::unlink(msg.filename) < 0 )
66 eDebug("remove file %s failed (%m)", msg.filename);
68 eDebug("file %s erased", msg.filename);
69 free((char*)msg.filename);
71 stop_thread_timer.start(2000, true); // stop thread in two seconds
77 eDebug("unhandled thread message");
81 eAutoInitP0<eBackgroundFileEraser> init_eBackgroundFilEraser(eAutoInitNumbers::configuration+1, "Background File Eraser");