diff --git a/src/base/CMakeLists.txt b/src/base/CMakeLists.txt index 804b68798..a8ba36ee4 100644 --- a/src/base/CMakeLists.txt +++ b/src/base/CMakeLists.txt @@ -51,6 +51,7 @@ utils/random.h utils/string.h utils/version.h asyncfilestorage.h +exceptions.h filesystemwatcher.h global.h iconprovider.h @@ -113,6 +114,7 @@ utils/net.cpp utils/random.cpp utils/string.cpp asyncfilestorage.cpp +exceptions.cpp filesystemwatcher.cpp iconprovider.cpp logger.cpp diff --git a/src/base/base.pri b/src/base/base.pri index 5a62fe982..426254794 100644 --- a/src/base/base.pri +++ b/src/base/base.pri @@ -17,6 +17,7 @@ HEADERS += \ $$PWD/bittorrent/torrentinfo.h \ $$PWD/bittorrent/tracker.h \ $$PWD/bittorrent/trackerentry.h \ + $$PWD/exceptions.h \ $$PWD/filesystemwatcher.h \ $$PWD/global.h \ $$PWD/http/connection.h \ @@ -82,6 +83,7 @@ SOURCES += \ $$PWD/bittorrent/torrentinfo.cpp \ $$PWD/bittorrent/tracker.cpp \ $$PWD/bittorrent/trackerentry.cpp \ + $$PWD/exceptions.cpp \ $$PWD/filesystemwatcher.cpp \ $$PWD/http/connection.cpp \ $$PWD/http/requestparser.cpp \ diff --git a/src/base/exceptions.cpp b/src/base/exceptions.cpp new file mode 100644 index 000000000..87c0e0c0a --- /dev/null +++ b/src/base/exceptions.cpp @@ -0,0 +1,40 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2018 Vladimir Golovnev + * + * 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 the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "exceptions.h" + +RuntimeError::RuntimeError(const QString &message) + : std::runtime_error {message.toUtf8().data()} + , m_message {message} +{ +} + +QString RuntimeError::message() const +{ + return m_message; +} diff --git a/src/base/exceptions.h b/src/base/exceptions.h new file mode 100644 index 000000000..3a95f919c --- /dev/null +++ b/src/base/exceptions.h @@ -0,0 +1,42 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2018 Vladimir Golovnev + * + * 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 the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include +#include + +class RuntimeError : public std::runtime_error +{ +public: + explicit RuntimeError(const QString &message = ""); + QString message() const; + +private: + const QString m_message; +};