-static void cleanupHandler(int sig);
-
-class FileCleanup
-{
-public:
- FileCleanup()
- {
- OS::CatchInterrupts(cleanupHandler);
- }
-
- ~FileCleanup()
- {
- flush();
- m_files.clear();
- }
-
- void addFile(Trace::File *file)
- {
- m_files.insert(file);
- }
- void removeFile(Trace::File *file)
- {
- m_files.erase(file);
- }
-
- void flush()
- {
- std::set<Trace::File*>::const_iterator itr;
- for (itr = m_files.begin(); itr != m_files.end(); ++itr) {
- (*itr)->flush(File::FlushDeep);
- }
- }
-
-private:
- std::set<Trace::File*> m_files;
-};
-static FileCleanup s_cleaner;
-
-static void cleanupHandler(int sig)
-{
- s_cleaner.flush();
-}
-