diff options
Diffstat (limited to 'src/device/device_ledger.hpp')
-rw-r--r-- | src/device/device_ledger.hpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/device/device_ledger.hpp b/src/device/device_ledger.hpp index e06c5f72c..2053067bd 100644 --- a/src/device/device_ledger.hpp +++ b/src/device/device_ledger.hpp @@ -36,7 +36,8 @@ #include "device.hpp" #include <PCSC/winscard.h> #include <PCSC/wintypes.h> - +#include <boost/thread/mutex.hpp> +#include <boost/thread/recursive_mutex.hpp> namespace hw { @@ -80,13 +81,11 @@ namespace hw { class device_ledger : public hw::device { private: - mutable std::mutex device_locker; - mutable std::mutex tx_locker; - void lock_device() ; - void unlock_device() ; - void lock_tx() ; - void unlock_tx() ; - + // Locker for concurrent access + mutable boost::recursive_mutex device_locker; + mutable boost::mutex command_locker; + + //PCSC management std::string full_name; SCARDCONTEXT hContext; SCARDHANDLE hCard; @@ -130,6 +129,14 @@ namespace hw { bool connect(void) override; bool disconnect() override; + + /* ======================================================================= */ + /* LOCKER */ + /* ======================================================================= */ + void lock(void) override; + void unlock(void) override; + bool try_lock(void) override; + /* ======================================================================= */ /* WALLET & ADDRESS */ /* ======================================================================= */ |