X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fexceptions.h;h=90a0abfc717d46cfa697b92fef0dccba62795620;hb=f90d74f7a0382f0dc63eef81bd553d7a7b38edb2;hp=213be6186d523a713a0a3f167f77127e0047164e;hpb=7f2e74604a51b984e4c8cbb5d5f4bb642677ec00;p=dcpomatic.git diff --git a/src/lib/exceptions.h b/src/lib/exceptions.h index 213be6186..90a0abfc7 100644 --- a/src/lib/exceptions.h +++ b/src/lib/exceptions.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012 Carl Hetherington + Copyright (C) 2012-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,13 +17,13 @@ */ -#ifndef DCPOMATIC_EXCEPTIONS_H -#define DCPOMATIC_EXCEPTIONS_H - -/** @file src/exceptions.h +/** @file src/lib/exceptions.h * @brief Our exceptions. */ +#ifndef DCPOMATIC_EXCEPTIONS_H +#define DCPOMATIC_EXCEPTIONS_H + #include #include #include @@ -205,7 +205,7 @@ public: {} }; -/** @class NetworkError. +/** @class NetworkError * @brief Indicates some problem with communication on the network. */ class NetworkError : public StringError @@ -216,6 +216,9 @@ public: {} }; +/** @class KDMError + * @brief A problem with a KDM. + */ class KDMError : public StringError { public: @@ -224,22 +227,44 @@ public: {} }; +/** @class PixelFormatError + * @brief A problem with an unsupported pixel format. + */ class PixelFormatError : public StringError { public: PixelFormatError (std::string o, AVPixelFormat f); }; -/** An error that occurs while parsing a SubRip file */ +/** @class SubRipError + * @brief An error that occurs while parsing a SubRip file. + */ class SubRipError : public FileError { public: SubRipError (std::string, std::string, boost::filesystem::path); }; -/** A parent class for classes which have a need to catch and - * re-throw exceptions. This is intended for classes - * which run their own thread; they should do something like +class DCPError : public StringError +{ +public: + DCPError (std::string s) + : StringError (s) + {} +}; + +class InvalidSignerError : public StringError +{ +public: + InvalidSignerError (); +}; + +/** @class ExceptionStore + * @brief A parent class for classes which have a need to catch and + * re-throw exceptions. + * + * This is intended for classes which run their own thread; they should do + * something like * * void my_thread () * try { @@ -259,8 +284,9 @@ public: void rethrow () { boost::mutex::scoped_lock lm (_mutex); if (_exception) { - boost::rethrow_exception (_exception); + boost::exception_ptr tmp = _exception; _exception = boost::exception_ptr (); + boost::rethrow_exception (tmp); } } @@ -276,6 +302,4 @@ private: mutable boost::mutex _mutex; }; - - #endif