diff options
| author | Manuel Traut <manut@mecka.net> | 2012-06-08 01:32:34 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2012-06-08 01:32:34 +0200 |
| commit | 76de3c5a53e5bb1e872d07d969a18ab1a2f294ff (patch) | |
| tree | 311e23cb947529ae04ce7a92b3ae63d6f877bbbd | |
| parent | 47074177e4d6675918684fad34a6b5fe39c380e7 (diff) | |
libdistrio_common: return error, if lookup fails
- if requested io can't be found, a error code will be returned
Signed-off-by: Manuel Traut <manut@mecka.net>
| -rw-r--r-- | common/distrio_helper.cpp | 29 | ||||
| -rw-r--r-- | common/distrio_helper.h | 4 |
2 files changed, 17 insertions, 16 deletions
diff --git a/common/distrio_helper.cpp b/common/distrio_helper.cpp index fa55d4c..6146265 100644 --- a/common/distrio_helper.cpp +++ b/common/distrio_helper.cpp @@ -258,53 +258,54 @@ void get_digital_list (Distrio::Digital_list_var *dig_list) } } -void lookup_analog (std::string _name, Distrio::Analog_list_var ana_list, +int lookup_analog (std::string _name, Distrio::Analog_list_var ana_list, Distrio::Analog **ptr) { if (ref.init != ORB_RUNNING) { std::cerr << "corba not initialized" << std::endl; - return; + return -EINVAL; } for (unsigned int i = 0; i < ana_list->length (); i++) { ::CORBA::String_var name; Distrio::Error *e; - try { e = ana_list[i]->name (name); if (!::CORBA::is_nil (e)) free (e); + if (! _name.compare (name.in ())) { + *ptr = ana_list[i]; + return 0; + } } catch (::CORBA::Exception &ex) { std::cerr << "get name of analog io failed\n" << ex << std::cerr; } - if (! _name.compare (name.in ())) { - *ptr = ana_list[i]; - return; - } } + return -EHOSTDOWN; } -void lookup_digital (std::string _name, Distrio::Digital_list_var dig_list, + +int lookup_digital (std::string _name, Distrio::Digital_list_var dig_list, Distrio::Digital **ptr) { if (ref.init != ORB_RUNNING) { std::cerr << "corba not initialized" << std::endl; - return; + return -EINVAL; } for (unsigned int i = 0; i < dig_list->length (); i++) { ::CORBA::String_var name; Distrio::Error *e; - try { e = dig_list[i]->name (name); if (!::CORBA::is_nil (e)) free (e); + if (! _name.compare (name.in ())) { + *ptr = dig_list[i]; + return 0; + } } catch (::CORBA::Exception &ex) { std::cerr << "get name of digital io failed\n" << ex << std::cerr; } - if (! _name.compare (name.in ())) { - *ptr = dig_list[i]; - return; - } } + return -EHOSTDOWN; } diff --git a/common/distrio_helper.h b/common/distrio_helper.h index f0ad95c..3ca6592 100644 --- a/common/distrio_helper.h +++ b/common/distrio_helper.h @@ -59,8 +59,8 @@ void get_digital_list (Distrio::Digital_list_var *dig_list); void get_analog_list (Distrio::Analog_list_var *ana_list); /** lookup a digital io by a common name at the manager */ -void lookup_digital (std::string _name, Distrio::Digital_list_var dig_list, +int lookup_digital (std::string _name, Distrio::Digital_list_var dig_list, Distrio::Digital **ptr); /** lookup a analog io by a common name at the manager */ -void lookup_analog (std::string _name, Distrio::Analog_list_var ana_list, +int lookup_analog (std::string _name, Distrio::Analog_list_var ana_list, Distrio::Analog **ptr); |
