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 | |
| 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>
| -rw-r--r-- | common/Makefile | 3 | ||||
| -rw-r--r-- | common/distrio_helper.cpp | 20 | ||||
| -rw-r--r-- | common/distrio_helper.h | 2 |
3 files changed, 22 insertions, 3 deletions
diff --git a/common/Makefile b/common/Makefile index 44357f5..33216c1 100644 --- a/common/Makefile +++ b/common/Makefile @@ -3,8 +3,9 @@ CXX := $(CROSS_COMPILE)g++ LD := $(CROSS_COMPILE)g++ DISTRIO_IO = ../io +DISTRIO_MANAGER = ../manager -CFLAGS += -fPIC -I. -I$(DISTRIO_IO) +CFLAGS += -fPIC -I. -I$(DISTRIO_IO) -I$(DISTRIO_MANAGER) CXXFLAGS += $(CFLAGS) TAO_IDL := tao_idl 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; } diff --git a/common/distrio_helper.h b/common/distrio_helper.h index 8070544..0d2d145 100644 --- a/common/distrio_helper.h +++ b/common/distrio_helper.h @@ -13,6 +13,8 @@ #include <distrio_ioC.h> #include <distrio_ioS.h> +#include <distrio_managerC.h> + #include <orbsvcs/CosNamingC.h> /** |
