summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2012-06-03 15:27:48 +0200
committerManuel Traut <manut@mecka.net>2012-06-03 15:27:48 +0200
commit99eaad1f40d12993321327667862699b9f63927b (patch)
tree8ed27f4091c33638f1a2a32198fa3fff7d4e675e
parent426acd4753ae90b3292e271e9e7eb48dbdc58a6d (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/Makefile3
-rw-r--r--common/distrio_helper.cpp20
-rw-r--r--common/distrio_helper.h2
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>
/**