summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2012-06-03 02:42:19 +0200
committerManuel Traut <manut@mecka.net>2012-06-03 02:42:19 +0200
commit50d93b3af6ed78b092f4610716cfdbe8ca4251f7 (patch)
tree8adeef7d7788a1ea30e594497e3bfcae8988b6ed
parentb47fc84f5d0ec01f103f99d8e4dcb27a24465de6 (diff)
manager: fix object registration @ naming service
- registration at naming service with 2 level cos names was broken - simplified it to 1 level; thats ok for the moment Signed-off-by: Manuel Traut <manut@mecka.net>
-rw-r--r--manager/distrio_manager.cpp67
1 files changed, 31 insertions, 36 deletions
diff --git a/manager/distrio_manager.cpp b/manager/distrio_manager.cpp
index 1e26ad7..de707e9 100644
--- a/manager/distrio_manager.cpp
+++ b/manager/distrio_manager.cpp
@@ -1,32 +1,12 @@
-// -*- C++ -*-
-// $Id$
-
/**
- * Code generated by the The ACE ORB (TAO) IDL Compiler v2.1.2
- * TAO and the TAO IDL Compiler have been developed by:
- * Center for Distributed Object Computing
- * Washington University
- * St. Louis, MO
- * USA
- * http://www.cs.wustl.edu/~schmidt/doc-center.html
- * and
- * Distributed Object Computing Laboratory
- * University of California at Irvine
- * Irvine, CA
- * USA
- * and
- * Institute for Software Integrated Systems
- * Vanderbilt University
- * Nashville, TN
- * USA
- * http://www.isis.vanderbilt.edu/
+ * distrio manager implementation
*
- * Information about TAO is available at:
- * http://www.cs.wustl.edu/~schmidt/TAO.html
- **/
-
-// TAO_IDL - Generated from
-// be/be_codegen.cpp:1673
+ * - instances a manager object
+ * - registers the manager object at the NamingService
+ *
+ * @author Manuel Traut <manut@mecka.net>
+ * @licence GPLv2
+ */
#include "distrio_managerI.h"
@@ -110,7 +90,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
int ret = 0;
CORBA::ORB_var orb;
- CORBA::Object_var distrio_manager_obj, tmp;
+ CORBA::Object_var distrio_manager_obj, root_poa, naming_service;
PortableServer::POA_var poa;
PortableServer::POAManager_var poa_mgr;
CosNaming::NamingContext_var nc;
@@ -122,23 +102,38 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
distrio_manager = new Distrio_Manager_i ();
try {
+ std::cout << "initialize CORBA orb" << std::endl;
orb = CORBA::ORB_init (argc, argv);
- tmp = orb->resolve_initial_references ("RootPOA");
- poa = PortableServer::POA::_narrow (tmp.in ());
+ root_poa = orb->resolve_initial_references ("RootPOA");
+ poa = PortableServer::POA::_narrow (root_poa.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 ());
+ std::cout << "get context of NameService" << std::endl;
+ naming_service = orb->resolve_initial_references ("NameService");
+ if (CORBA::is_nil (naming_service)) {
+ std::cerr << "can't resolve NameService" << std::endl;
+ ret = -EINVAL;
+ goto out;
+ }
+ nc = CosNaming::NamingContext::_narrow (naming_service.in ());
+ if (CORBA::is_nil (nc)) {
+ std::cerr << "resolved invalid NameService object" << std::endl;
+ ret = -EINVAL;
+ goto out;
+ }
+
+ std::cout << "bind manager object at NameService" << std::endl;
+ /* TODO: find out how to build a tree @ the nameservice "distrio/manager" */
+ name.length (1);
+ name[0].id = CORBA::string_dup ("distrio_manager");
nc->rebind (name, distrio_manager_obj.in ());
+ std::cout << "activate POA Manager" << std::endl;
poa_mgr = poa->the_POAManager ();
poa_mgr->activate ();
+ std::cout << "distrio_manager ready" << std::endl;
orb->run ();
orb->destroy ();
} catch (CORBA::SystemException &e) {