diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-08-08 17:51:34 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-08-09 18:32:34 +0200 |
commit | a2da17c8608d25f64239047d0ff497adb015e411 (patch) | |
tree | c6d4b656280fe0b91903ac3398af8ac56c051ca6 /NitrokeyManager.cc | |
parent | 8bb22cbc88d930f4e88989bfbce0d19dcd0887e2 (diff) | |
download | libnitrokey-a2da17c8608d25f64239047d0ff497adb015e411.tar.gz libnitrokey-a2da17c8608d25f64239047d0ff497adb015e411.tar.bz2 |
Moving to shared ptr for device
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'NitrokeyManager.cc')
-rw-r--r-- | NitrokeyManager.cc | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc index 93b11fa..c6eb51b 100644 --- a/NitrokeyManager.cc +++ b/NitrokeyManager.cc @@ -24,7 +24,7 @@ namespace nitrokey{ // package type to auth, auth type [Authorize,UserAuthorize] template <typename S, typename A, typename T> - void auth_package(T& package, const char* admin_temporary_password, Device * device){ + void auth_package(T& package, const char* admin_temporary_password, shared_ptr<Device> device){ auto auth = get_payload<A>(); strcpyT(auth.temporary_password, admin_temporary_password); auth.crc_to_authorize = S::CommandTransaction::getCRC(package); @@ -33,22 +33,18 @@ namespace nitrokey{ NitrokeyManager * NitrokeyManager::_instance = nullptr; - NitrokeyManager::NitrokeyManager(): device(nullptr) { + NitrokeyManager::NitrokeyManager() { set_debug(true); } NitrokeyManager::~NitrokeyManager() { - delete device; } bool NitrokeyManager::connect() { device = nullptr; - vector<Device*> devices = { new Stick10(), new Stick20() }; + vector< shared_ptr<Device> > devices = { make_shared<Stick10>(), make_shared<Stick20>() }; for( auto d : devices ){ - if (device != nullptr){ - delete d; - } - if (device == nullptr && d->connect()){ - device = d; + if (d->connect()){ + device = std::shared_ptr<Device>(d); } } return device != nullptr; @@ -58,10 +54,10 @@ namespace nitrokey{ bool NitrokeyManager::connect(const char *device_model) { switch (device_model[0]){ case 'P': - device = new Stick10(); + device = make_shared<Stick10>(); break; case 'S': - device = new Stick20(); + device = make_shared<Stick20>(); break; default: throw std::runtime_error("Unknown model"); |