syncthingtray/syncthingwidgets/misc/internalerror.h

48 lines
1.2 KiB
C
Raw Permalink Normal View History

#ifndef SYNCTHINGWIDGETS_INTERNAL_ERROR_H
#define SYNCTHINGWIDGETS_INTERNAL_ERROR_H
#include "../global.h"
#include <c++utilities/chrono/datetime.h>
#include <QByteArray>
#include <QString>
#include <QUrl>
namespace Data {
class SyncthingConnection;
enum class SyncthingErrorCategory;
} // namespace Data
namespace QtGui {
struct SYNCTHINGWIDGETS_EXPORT InternalError {
2021-10-04 19:17:33 +02:00
explicit InternalError(const QString &message = QString(), const QUrl &url = QUrl(), const QByteArray &response = QByteArray());
static bool isRelevant(
const Data::SyncthingConnection &connection, Data::SyncthingErrorCategory category, const QString &message, int networkError);
QString message;
QUrl url;
QByteArray response;
2019-06-10 22:48:26 +02:00
CppUtilities::DateTime when;
};
Make c'tor of `InternalError` inline again to workaround linker errors Otherwise the shared build with targeting x86_64-w64-mingw32 fails with: ``` FAILED: widgets/syncthingwidgets-qt6.dll widgets/libsyncthingwidgets-qt6.dll.a : && /usr/lib/ccache/bin/x86_64-w64-mingw32-g++ -D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS -D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS -O2 -pipe -fno-plt -fexceptions --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fcf-protection -O3 -DNDEBUG -Wl,-O1,--sort-common,--as-needed -fstack-protector -shared -o widgets/syncthingwidgets-qt6.dll -Wl,--out-implib,widgets/libsyncthingwidgets-qt6.dll.a -Wl,--major-image-version,1,--minor-image-version,1 widgets/CMakeFiles/syncthingwidgets-qt6.dir/syncthingwidgets-qt6_autogen/mocs_compilation.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/settings/settings.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/settings/settingsdialog.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/webview/webpage.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/webview/webviewdialog.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/webview/webviewinterceptor.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/textviewdialog.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/internalerrorsdialog.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/direrrorsdialog.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/statusinfo.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/dbusstatusnotifier.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/internalerror.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/otherdialogs.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/syncthinglauncher.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/syncthingkiller.cpp.obj widgets/CMakeFiles/syncthingwidgets-qt6.dir/resources/windows-Release.rc.res widgets/CMakeFiles/syncthingwidgets-qt6.dir/syncthingwidgets-qt6_autogen/3YJK5W5UP7/qrc_syncthingwidgetsicons.cpp.obj -L/build/mingw-w64-syncthingtray-qt6/src/syncthingtray/build-x86_64-w64-mingw32-shared/connector -L/build/mingw-w64-syncthingtray-qt6/src/syncthingtray/build-x86_64-w64-mingw32-shared/model -L/build/mingw-w64-syncthingtray-qt6/src/lib model/libsyncthingmodel-qt6.dll.a /usr/x86_64-w64-mingw32/lib/libqtutilities-qt6.dll.a libsyncthing/libsyncthing-qt6.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Network.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Concurrent.dll.a connector/libsyncthingconnector-qt6.dll.a /usr/x86_64-w64-mingw32/lib/libc++utilities.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Network.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Core.dll.a /usr/x86_64-w64-mingw32/lib/libqtforkawesome-qt6.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Widgets.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Gui.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Core.dll.a /usr/x86_64-w64-mingw32/lib/libc++utilities.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Widgets.dll.a /usr/x86_64-w64-mingw32/lib/libQt6Gui.dll.a -ld3d11 -ldxgi -ldxguid -lws2_32 /usr/x86_64-w64-mingw32/lib/libQt6Core.dll.a -lmpr -luserenv -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && : /usr/lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld: widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/internalerror.cpp.obj:internalerror.cpp:(.text+0x1a0): multiple definition of `QtGui::InternalError::InternalError(QString const&, QUrl const&, QByteArray const&)'; widgets/CMakeFiles/syncthingwidgets-qt6.dir/syncthingwidgets-qt6_autogen/mocs_compilation.cpp.obj:mocs_compilation.cpp:(.text$_ZN5QtGui13InternalErrorC2ERK7QStringRK4QUrlRK10QByteArray[_ZN5QtGui13InternalErrorC2ERK7QStringRK4QUrlRK10QByteArray]+0x0): first defined here /usr/lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld: widgets/CMakeFiles/syncthingwidgets-qt6.dir/misc/internalerror.cpp.obj:internalerror.cpp:(.text+0x1a0): multiple definition of `QtGui::InternalError::InternalError(QString const&, QUrl const&, QByteArray const&)'; widgets/CMakeFiles/syncthingwidgets-qt6.dir/syncthingwidgets-qt6_autogen/mocs_compilation.cpp.obj:mocs_compilation.cpp:(.text$_ZN5QtGui13InternalErrorC1ERK7QStringRK4QUrlRK10QByteArray[_ZN5QtGui13InternalErrorC1ERK7QStringRK4QUrlRK10QByteArray]+0x0): first defined here ``` I can currently not make sense of this build error. It does not happen when targeting Linux or i686.
2021-10-05 00:13:34 +02:00
/*!
* \brief Constructs a new error suitable for display purposes (password in \a url is redacted).
*/
inline InternalError::InternalError(const QString &message, const QUrl &url, const QByteArray &response)
: message(message)
, url(url)
, response(response)
, when(CppUtilities::DateTime::now())
{
if (!this->url.password().isEmpty()) {
this->url.setPassword(QStringLiteral("redacted"));
}
}
} // namespace QtGui
#endif // SYNCTHINGWIDGETS_INTERNAL_ERROR_H