From 6d77208d5ea6c18d28825c9dd4bf27565de0204f Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Sat, 2 Jun 2012 20:16:00 +0200 Subject: manager: add corba initialization - register manager object at namingservice Signed-off-by: Manuel Traut --- manager/Makefile | 2 +- manager/distrio_manager.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/manager/Makefile b/manager/Makefile index 28f7421..41553c3 100644 --- a/manager/Makefile +++ b/manager/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_PortableServer + -lACE -lTAO -lTAO_AnyTypeCode -lTAO_CosNaming -lTAO_PortableServer CFLAGS += -fPIC -I$(DISTRIO_COMMON) -I$(DISTRIO_IO) CXXFLAGS += $(CFLAGS) diff --git a/manager/distrio_manager.cpp b/manager/distrio_manager.cpp index 8cd2f03..1e26ad7 100644 --- a/manager/distrio_manager.cpp +++ b/manager/distrio_manager.cpp @@ -30,6 +30,10 @@ #include "distrio_managerI.h" +#include + +#include + // Implementation skeleton constructor Distrio_Manager_i::Distrio_Manager_i (void) { @@ -100,7 +104,54 @@ void Distrio_Manager_i::log_error ( // Add your implementation here } -int main (int argc, char **argv) +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { - return 0; + std::cout << __FILE__ << " build " << __DATE__ << " " << __TIME__ <resolve_initial_references ("RootPOA"); + poa = PortableServer::POA::_narrow (tmp.in ()); + distrio_manager_oid = poa->activate_object (distrio_manager); + distrio_manager_obj = distrio_manager->_this (); + + CORBA::String_var ior (orb->object_to_string (distrio_manager_obj.in ())); + tmp = orb->resolve_initial_references ("NameService"); + name.length (2); + name[0].id = CORBA::string_dup ("distrio"); + name[1].id = CORBA::string_dup ("manager"); + nc = CosNaming::NamingContext::_narrow (tmp.in ()); + nc->rebind (name, distrio_manager_obj.in ()); + + poa_mgr = poa->the_POAManager (); + poa_mgr->activate (); + + orb->run (); + orb->destroy (); + } catch (CORBA::SystemException &e) { + std::cerr << "CORBA initialization failed: " << e << std::endl; + ret = -EINVAL; + goto out; + } catch(CORBA::Exception &e) { + std::cerr << "CORBA initialization failed: " << e << std::endl; + ret = -EINVAL; + goto out; + } + +out: + free (distrio_manager); + return ret; } -- cgit v1.2.3