Mercurial > hg > svcore
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