summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2012-06-03 18:41:09 +0200
committerManuel Traut <manut@mecka.net>2012-06-03 18:41:09 +0200
commitb4438ec8043b2d803eb3c5da979ed4c9a3b1f53e (patch)
tree611e13cb5e15a456b852ed0e7da91526c37f0903
parent5a4291a430d1584d05382510449408f4d70327a9 (diff)
manager: fix bugs in io registration
- an error needs to be returned - narrow ptr into corba obj Signed-off-by: Manuel Traut <manut@mecka.net>
-rw-r--r--manager/bin/Makefile2
-rw-r--r--manager/bin/distrio_manager.cpp15
2 files changed, 14 insertions, 3 deletions
diff --git a/manager/bin/Makefile b/manager/bin/Makefile
index 05c14d7..994c384 100644
--- a/manager/bin/Makefile
+++ b/manager/bin/Makefile
@@ -6,7 +6,7 @@ DISTRIO_COMMON := ../../common
DISTRIO_IO := ../../io
LDFLAGS += -L$(DISTRIO_COMMON) -ldistrio_common -L$(DISTRIO_IO) -ldistrio_io \
- -lACE -lTAO -lTAO_AnyTypeCode -lTAO_CosNaming -lTAO_PortableServer
+ -lrt -lACE -lTAO -lTAO_AnyTypeCode -lTAO_CosNaming -lTAO_PortableServer
CFLAGS += -fPIC -I$(DISTRIO_COMMON) -I$(DISTRIO_IO)
CXXFLAGS += $(CFLAGS)
diff --git a/manager/bin/distrio_manager.cpp b/manager/bin/distrio_manager.cpp
index b7671fb..b808d89 100644
--- a/manager/bin/distrio_manager.cpp
+++ b/manager/bin/distrio_manager.cpp
@@ -10,6 +10,8 @@
#include "distrio_manager.h"
+#include <distrio_error.h>
+
#include <orbsvcs/CosNamingC.h>
#include <iostream>
@@ -47,9 +49,18 @@ Distrio_Manager_i::~Distrio_Manager_i (void)
::Distrio::Error * Distrio_Manager_i::register_io_digital (
::Distrio::Digital_ptr & io_digi)
{
- io_digi->id (new_id ());
+ Distrio::Digital_var dig;
+
+ try {
+ dig = Distrio::Digital::_narrow (io_digi);
+ dig->id (new_id ());
+ } catch (::CORBA::Exception *exc) {
+ std::cerr << "register io failed" << std::endl;
+ }
digital_list.length (digital_list.length () + 1);
- digital_list [digital_list.length () - 1] = io_digi;
+ digital_list [digital_list.length () - 1] = dig;
+
+ return distrio_success ();
}
::Distrio::Error * Distrio_Manager_i::register_io_analog (