diff options
| author | Manuel Traut <manut@mecka.net> | 2012-06-03 15:27:48 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2012-06-03 15:27:48 +0200 |
| commit | 99eaad1f40d12993321327667862699b9f63927b (patch) | |
| tree | 8ed27f4091c33638f1a2a32198fa3fff7d4e675e /common/distrio_helper.cpp | |
| parent | 426acd4753ae90b3292e271e9e7eb48dbdc58a6d (diff) | |
libdistrio_common: register digital also at manager
- add registration of digital io's at the distrio manager
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'common/distrio_helper.cpp')
| -rw-r--r-- | common/distrio_helper.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/common/distrio_helper.cpp b/common/distrio_helper.cpp index 458395b..5a0d5df 100644 --- a/common/distrio_helper.cpp +++ b/common/distrio_helper.cpp @@ -44,8 +44,10 @@ out: int register_digital (char *_name, Distrio_Digital_i *digital) { CosNaming::Name name; - CORBA::Object_var obj; + CORBA::Object_var obj, manager_obj; PortableServer::ObjectId_var oid; + Distrio::Manager_var manager; + Distrio::Digital_ptr ptr; if (!ref.init) { std::cerr << "corba not initialized" << std::endl; @@ -60,7 +62,21 @@ int register_digital (char *_name, Distrio_Digital_i *digital) name[0].kind = CORBA::string_dup ("digital_io"); ref.nc->rebind (name, obj.in ()); } catch (CORBA::Exception &e) { - std::cerr << "CORBA initialization failed: " << e << std::endl; + std::cerr << "CORBA bind digital io at naming service failed: " + << e << std::endl; + return -1; + } + + try { + name[0].id = CORBA::string_dup ("distrio_manager"); + name[0].kind = CORBA::string_dup (""); + manager_obj = ref.nc->resolve (name); + manager = Distrio::Manager::_narrow (manager_obj); + ptr = Distrio::Digital::_narrow (obj); + manager->register_io_digital (ptr); + } catch (CORBA::Exception &e) { + std::cerr << "CORBA register digital io at distrio manager failed: " + << e << std::endl; return -1; } |
