diff options
author | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-23 18:28:55 +0000 |
---|---|---|
committer | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-23 18:28:55 +0000 |
commit | ae5e2ecda23dd9af9f35b97fab0337a06bb55cec (patch) | |
tree | 995ce6f951d074b81b85eeb860ee468252d170ba /TAO/examples/POA/NewPOA/NewPOA.cpp | |
parent | 74205f4d54deada413395d34b3dfa99d51c6f7cb (diff) | |
download | ATCD-ae5e2ecda23dd9af9f35b97fab0337a06bb55cec.tar.gz |
This commit was manufactured by cvs2svn to create tagbefore_proactor
'before_proactor'.
Diffstat (limited to 'TAO/examples/POA/NewPOA/NewPOA.cpp')
-rw-r--r-- | TAO/examples/POA/NewPOA/NewPOA.cpp | 147 |
1 files changed, 101 insertions, 46 deletions
diff --git a/TAO/examples/POA/NewPOA/NewPOA.cpp b/TAO/examples/POA/NewPOA/NewPOA.cpp index 8a52461c054..80058d2f059 100644 --- a/TAO/examples/POA/NewPOA/NewPOA.cpp +++ b/TAO/examples/POA/NewPOA/NewPOA.cpp @@ -10,12 +10,12 @@ // = DESCRIPTION // This program demonstrates creation of new POAs, as children of the root POA or the // existing POA. -// There are three new POA created in this example. +// There are five new POA created in this example. // The hierarchy of POAs looks like this. // // /-->first_poa-->first_poa/second_poa // RootPOA-- -// \-->third_poa +// \-->third_poa-->third_poa/fourth_poa-->third_poa/fourth_poa/fifth_poa // // = AUTHOR // Irfan Pyarali @@ -28,25 +28,29 @@ ACE_RCSID(NewPOA, NewPOA, "$Id$") int main (int argc, char **argv) { - // CORBA::Environment env; - - ACE_DECLARE_NEW_CORBA_ENV; + CORBA::Environment env; // The first step Initialize the ORB - CORBA::ORB_var orb = CORBA::ORB_init (argc, - argv, - 0, - ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); - + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, 0, env); + if (env.exception () != 0) + { + env.print_exception ("CORBA::ORB_init"); + return -1; + } + // Obtain the object reference to the RootPOA. CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA"); // _narrow() the Object to get the POA object, i.e., the root_poa. PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (obj.in (), ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + PortableServer::POA::_narrow (obj.in (), env); + + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::_narrow"); + return -1; + } // Policies for the new POAs CORBA::PolicyList policies (2); @@ -54,13 +58,23 @@ main (int argc, char **argv) // Threading policy policies[0] = - root_poa->create_thread_policy (PortableServer::ORB_CTRL_MODEL, ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + root_poa->create_thread_policy (PortableServer::ORB_CTRL_MODEL, env); + + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::create_thread_policy"); + return -1; + } // Lifespan policy policies[1] = - root_poa->create_lifespan_policy (PortableServer::TRANSIENT, ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + root_poa->create_lifespan_policy (PortableServer::TRANSIENT, env); + + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::create_lifespan_policy"); + return -1; + } // Creation of the firstPOA ACE_CString name = "firstPOA"; @@ -68,70 +82,111 @@ main (int argc, char **argv) root_poa->create_POA (name.c_str (), PortableServer::POAManager::_nil (), policies, - ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::create_POA"); + return -1; + } // Creation of the new POA, i.e. firstPOA/secondPOA - name = "secondPOA"; + name += TAO_POA::name_separator (); + name += "secondPOA"; PortableServer::POA_var second_poa = - first_poa->create_POA (name.c_str (), - PortableServer::POAManager::_nil (), - policies, - ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + root_poa->create_POA (name.c_str (), + PortableServer::POAManager::_nil (), + policies, + env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::create_POA"); + return -1; + } - // Creating thirdPOA. + // Creating thirdPOA/fourthPOA/fifthPOA. The non-existing thirdPOA + // and thirdPOA/fourthPOA are created automatically. name = "thirdPOA"; + name += TAO_POA::name_separator (); + name += "forthPOA"; + name += TAO_POA::name_separator (); + name += "fifthPOA"; - PortableServer::POA_var third_poa = + PortableServer::POA_var fifth_poa = root_poa->create_POA (name.c_str (), PortableServer::POAManager::_nil (), policies, - ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::create_POA"); + return -1; + } // Creation of the new POAs over, so destroy the Policy_ptr's. for (CORBA::ULong i = 0; - i < policies.length () && ACE_TRY_ENV.exception () == 0; + i < policies.length () && env.exception () == 0; ++i) { CORBA::Policy_ptr policy = policies[i]; - policy->destroy (ACE_TRY_ENV); + policy->destroy (env); } - ACE_CHECK_RETURN (-1); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::create_POA"); + return -1; + } // Get the names of all the POAs and print them out. CORBA::String_var root_poa_name = - root_poa->the_name (ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + root_poa->the_name (env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::_narrow"); + return -1; + } CORBA::String_var first_poa_name = - first_poa->the_name (ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + first_poa->the_name (env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::_narrow"); + return -1; + } CORBA::String_var second_poa_name = - second_poa->the_name (ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); - + second_poa->the_name (env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::_narrow"); + return -1; + } - CORBA::String_var third_poa_name = - third_poa->the_name (ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + CORBA::String_var fifth_poa_name = + fifth_poa->the_name (env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::_narrow"); + return -1; + } ACE_DEBUG ((LM_DEBUG, "%s\n%s\n%s\n%s\n", root_poa_name.in (), first_poa_name.in (), second_poa_name.in (), - third_poa_name.in ())); - + fifth_poa_name.in ())); + // This should destroy all its children root_poa->destroy (1, 1, - ACE_TRY_ENV); - ACE_CHECK_RETURN (-1); + env); + if (env.exception () != 0) + { + env.print_exception ("PortableServer::POA::destroy"); + return -1; + } return 0; } |