32 #ifdef WITH_DEVICE_LEDGER 54 static void clear_device_registry(){
55 get_device_registry(
true);
60 #ifdef WITH_DEVICE_LEDGER 63 atexit(clear_device_registry);
67 auto search = registry.find(device_name);
68 if (search != registry.end()){
72 registry.insert(std::make_pair(device_name, std::unique_ptr<device>(hw_device)));
78 auto delim = device_descriptor.find(
':');
79 auto device_descriptor_lookup = device_descriptor;
80 if (delim != std::string::npos) {
81 device_descriptor_lookup = device_descriptor.substr(0, delim);
84 auto device = registry.find(device_descriptor_lookup);
85 if (
device == registry.end()) {
86 MERROR(
"Device not found in registry: '" << device_descriptor <<
"'. Known devices: ");
87 for(
const auto& sm_pair : registry ) {
88 MERROR(
" - " << sm_pair.first);
90 throw std::runtime_error(
"device not found: " + device_descriptor);
97 return registry->
get_device(device_descriptor);
void register_all(std::map< std::string, std::unique_ptr< device >> ®istry)
bool register_device(const std::string &device_name, device *hw_device)
bool register_device(const std::string &device_name, device *hw_device)
device & get_device(const std::string &device_descriptor)
void register_all(std::map< std::string, std::unique_ptr< device >> ®istry)
device & get_device(const std::string &device_descriptor)