aboutsummaryrefslogtreecommitdiff
path: root/include/device_proto.h
diff options
context:
space:
mode:
authorSzczepan Zalega <szczepan@nitrokey.com>2017-12-11 10:51:53 +0100
committerSzczepan Zalega <szczepan@nitrokey.com>2017-12-11 10:51:53 +0100
commit17309629889269e99d14b4e880675682d8b6435f (patch)
treeab37c07e186315410d0187b52c4d5b5492555662 /include/device_proto.h
parent7797c8fb5fa69068dd659c369bc774ca74f592fe (diff)
downloadlibnitrokey-wip-retry_function.tar.gz
libnitrokey-wip-retry_function.tar.bz2
Allow to execute client-supplied function on each retry and cancel with itwip-retry_function
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'include/device_proto.h')
-rw-r--r--include/device_proto.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/device_proto.h b/include/device_proto.h
index 388c721..89fed12 100644
--- a/include/device_proto.h
+++ b/include/device_proto.h
@@ -1,6 +1,7 @@
#ifndef DEVICE_PROTO_H
#define DEVICE_PROTO_H
+#include <functional>
#include <utility>
#include <thread>
#include <type_traits>
@@ -38,6 +39,8 @@
namespace nitrokey {
namespace proto {
extern std::mutex send_receive_mtx;
+ using retry_type = std::function <int(int)>;
+ extern retry_type on_retry;
/*
@@ -362,6 +365,8 @@ namespace nitrokey {
dev->m_counters.total_retries++;
LOG(".", Loglevel::DEBUG_L1);
std::this_thread::sleep_for(retry_timeout);
+ if (on_retry(receiving_retry_counter) == -1)
+ throw DeviceReceivingFailure("User canceled");
continue;
}
if (successful_communication) break;