diff options
| author | Manuel Traut <manut@mecka.net> | 2012-06-03 02:42:19 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2012-06-03 02:42:19 +0200 |
| commit | 50d93b3af6ed78b092f4610716cfdbe8ca4251f7 (patch) | |
| tree | 8adeef7d7788a1ea30e594497e3bfcae8988b6ed | |
| parent | b47fc84f5d0ec01f103f99d8e4dcb27a24465de6 (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.cpp | 67 |
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) { |
