summaryrefslogtreecommitdiff
path: root/lib/status_handler_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/status_handler_impl.h')
-rw-r--r--lib/status_handler_impl.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/status_handler_impl.h b/lib/status_handler_impl.h
new file mode 100644
index 00000000..7141d75c
--- /dev/null
+++ b/lib/status_handler_impl.h
@@ -0,0 +1,34 @@
+// **************************************************************************
+// * This file is part of the FreeFileSync project. It is distributed under *
+// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
+// * Copyright (C) ZenJu (zhnmju123 AT gmx DOT de) - All Rights Reserved *
+// **************************************************************************
+
+#ifndef STATUSHANDLER_IMPL_H_INCLUDED
+#define STATUSHANDLER_IMPL_H_INCLUDED
+
+#include <zen/file_error.h>
+#include "status_handler.h"
+
+template <typename Function> inline
+bool tryReportingError(Function cmd, ProcessCallback& handler) //return "true" on success, "false" if error was ignored
+{
+ for (;;)
+ try
+ {
+ cmd(); //throw FileError
+ return true;
+ }
+ catch (zen::FileError& error)
+ {
+ switch (handler.reportError(error.toString())) //may throw!
+ {
+ case ProcessCallback::IGNORE_ERROR:
+ return false;
+ case ProcessCallback::RETRY:
+ break; //continue with loop
+ }
+ }
+}
+
+#endif //STATUSHANDLER_IMPL_H_INCLUDED
bgstack15