diff options
| author | Manuel Traut <manut@mecka.net> | 2012-06-03 21:25:38 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2012-06-03 21:25:38 +0200 |
| commit | e84faa1a220ebdcf79a3d95e539dfc8d86a8c460 (patch) | |
| tree | 6ba70ab3e822df66d11eb9c941cf4c5b682d58d5 /common/distrio_helper.cpp | |
| parent | 5c0a813f9b3004eeba0166e02a98f6fe842c9073 (diff) | |
try to implement lookup_digital ()
- manager crashes at the moment ..
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'common/distrio_helper.cpp')
| -rw-r--r-- | common/distrio_helper.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/common/distrio_helper.cpp b/common/distrio_helper.cpp index aaf43c1..076719c 100644 --- a/common/distrio_helper.cpp +++ b/common/distrio_helper.cpp @@ -96,6 +96,41 @@ int register_digital (std::string _name, Distrio_Digital_i *digital) return 0; } +Distrio::Digital_ptr lookup_digital (std::string _name) +{ + CORBA::Object_var obj; + Distrio::Digital_var ret; + Distrio::Digital_list_var dig_list; + Distrio::Error *e; + + if (ref.init != ORB_RUNNING) { + std::cerr << "corba not initialized" << std::endl; + return NULL; + } + + try { + e = ref.manager->digital (dig_list); + free (e); + } catch (CORBA::Exception &_e) { + std::cerr << "CORBA lookup digital io "<< _name <<" failed: " + << _e << std::endl; + return NULL; + } + + for (unsigned int i = 0; i < dig_list->length (); i++) { + ::CORBA::String_var name; + Distrio::Error *e; + e = dig_list[i]->name (name); + free (e); + if (! _name.compare (name)) { + Distrio::Digital_ptr ptr = dig_list[i]; + return ptr; + } + } + + return NULL; +} + int register_device (std::string _name, Distrio_Device_i *dev) { CosNaming::Name name; |
