add background file eraser class for asynchronous file deletion
[enigma2.git] / lib / components / file_eraser.h
diff --git a/lib/components/file_eraser.h b/lib/components/file_eraser.h
new file mode 100644 (file)
index 0000000..6cb13dd
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef __lib_components_file_eraser_h
+#define __lib_components_file_eraser_h
+
+#include <lib/base/thread.h>
+#include <lib/base/message.h>
+#include <lib/base/ebase.h>
+
+class eBackgroundFileEraser: public eMainloop, private eThread, public Object
+{
+       struct Message
+       {
+               int type;
+               const char *filename;
+               enum
+               {
+                       erase,
+                       quit
+               };
+               Message(int type=0, const char *filename=0)
+                       :type(type), filename(filename)
+               {}
+       };
+       eFixedMessagePump<Message> messages;
+       static eBackgroundFileEraser *instance;
+       void gotMessage(const Message &message);
+       void thread();
+       void idle();
+       eTimer stop_thread_timer;
+#ifndef SWIG
+public:
+#endif
+       eBackgroundFileEraser();
+       ~eBackgroundFileEraser();
+#ifdef SWIG
+public:
+#endif
+       void erase(const char * filename);
+       static eBackgroundFileEraser *getInstance() { return instance; }
+};
+
+#endif