Give a better error if a specified CPL does not exist.
[dcpomatic.git] / src / lib / exceptions.h
index a8f095c22a2fba730ceb941286229424114d7236..618a03f4326510c8e532481ce899a7fb1dfcf18e 100644 (file)
@@ -253,19 +253,19 @@ public:
 class NetworkError : public std::runtime_error
 {
 public:
-       explicit NetworkError (std::string s, std::string d = "");
+       explicit NetworkError (std::string s, boost::optional<std::string> d = boost::optional<std::string>());
 
        std::string summary () const {
                return _summary;
        }
 
-       std::string detail () const {
+       boost::optional<std::string> detail () const {
                return _detail;
        }
 
 private:
        std::string _summary;
-       std::string _detail;
+       boost::optional<std::string> _detail;
 };
 
 
@@ -335,6 +335,15 @@ public:
 };
 
 
+class CPLNotFoundError : public DCPError
+{
+public:
+       CPLNotFoundError(std::string id)
+               : DCPError(String::compose("CPL %1 not found", id))
+       {}
+};
+
+
 class InvalidSignerError : public std::runtime_error
 {
 public:
@@ -416,7 +425,7 @@ private:
 
 
 /** @class CommunicationFailedError
- *  @brief Communcation between dcpomatic2_disk and _disk_writer failed somehow.
+ *  @brief Communication between dcpomatic2_disk and _disk_writer failed somehow.
  */
 class CommunicationFailedError : public CopyError
 {