diff transform/FeatureWriter.h @ 604:4541581067f3

* Better handling of failed-to-open-output-stream situations; ensure CSV writer closes files when they're finished rather than when it's finished
author Chris Cannam
date Tue, 08 Sep 2009 16:52:36 +0000
parents 1aefb666ecfc
children 608b4dc5ff34
line wrap: on
line diff
--- a/transform/FeatureWriter.h	Tue Sep 08 11:27:26 2009 +0000
+++ b/transform/FeatureWriter.h	Tue Sep 08 16:52:36 2009 +0000
@@ -59,6 +59,24 @@
     };
     virtual void setTrackMetadata(QString trackid, TrackMetadata metadata) { }
 
+    class FailedToOpenOutputStream : virtual public std::exception
+    {
+    public:
+        FailedToOpenOutputStream(QString trackId, QString transformId) throw() :
+            m_trackId(trackId),
+            m_transformId(transformId)
+        { }
+        virtual ~FailedToOpenOutputStream() throw() { }
+        virtual const char *what() const throw() {
+            return QString("Failed to open output stream for track id \"%1\", transform id \"%2\"")
+                .arg(m_trackId).arg(m_transformId).toLocal8Bit().data();
+        }            
+        
+    protected:
+        QString m_trackId;
+        QString m_transformId;
+    };
+
     // may throw FailedToOpenFile or other exceptions
 
     virtual void write(QString trackid,
@@ -70,6 +88,8 @@
     virtual void flush() { } // whatever the last stream was
 
     virtual void finish() = 0;
+
+    virtual QString getWriterTag() const = 0;
 };
 
 #endif