diff options
Diffstat (limited to 'TAO/examples/POA/On_Demand_Activation/server.cpp')
-rw-r--r-- | TAO/examples/POA/On_Demand_Activation/server.cpp | 322 |
1 files changed, 157 insertions, 165 deletions
diff --git a/TAO/examples/POA/On_Demand_Activation/server.cpp b/TAO/examples/POA/On_Demand_Activation/server.cpp index 5b0409cd135..94baef307ce 100644 --- a/TAO/examples/POA/On_Demand_Activation/server.cpp +++ b/TAO/examples/POA/On_Demand_Activation/server.cpp @@ -65,36 +65,36 @@ write_iors_to_file (const char *first_ior, FILE *output_file_1 = ACE_OS::fopen (ior_output_file_1, "w"); FILE *output_file_2 = ACE_OS::fopen (ior_output_file_2, "w"); - - if (output_file_1 == 0 || + + if (output_file_1 == 0 || output_file_2 == 0) - ACE_ERROR_RETURN ((LM_ERROR, "Cannot open output files for writing IORs: %s, %s\n", + ACE_ERROR_RETURN ((LM_ERROR, "Cannot open output files for writing IORs: %s, %s\n", ior_output_file_1, - ior_output_file_2), + ior_output_file_2), -1); int result = ACE_OS::fprintf (output_file_1, - "%s", + "%s", first_ior); if (result <= 0 || ACE_static_cast(size_t,result) != ACE_OS::strlen (first_ior)) - ACE_ERROR_RETURN ((LM_ERROR, - "ACE_OS::fprintf failed while writing %s to %s\n", + ACE_ERROR_RETURN ((LM_ERROR, + "ACE_OS::fprintf failed while writing %s to %s\n", first_ior, ior_output_file_1), -1); - + result = ACE_OS::fprintf (output_file_2, - "%s", + "%s", second_ior); if (result <= 0 || ACE_static_cast(size_t,result) != ACE_OS::strlen (second_ior)) - ACE_ERROR_RETURN ((LM_ERROR, - "ACE_OS::fprintf failed while writing %s to %s\n", + ACE_ERROR_RETURN ((LM_ERROR, + "ACE_OS::fprintf failed while writing %s to %s\n", second_ior, ior_output_file_2), -1); - + ACE_OS::fclose (output_file_1); ACE_OS::fclose (output_file_2); @@ -104,192 +104,184 @@ write_iors_to_file (const char *first_ior, int main (int argc, char **argv) { - ACE_DECLARE_NEW_CORBA_ENV; - - ACE_TRY - { - // Initialize the ORB. - CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, 0, ACE_TRY_ENV); - ACE_TRY_CHECK; - - int result = parse_args (argc, argv); - if (result != 0) - return result; - - // Get an Object reference to RootPOA. - CORBA::Object_var obj = - orb->resolve_initial_references ("RootPOA"); - - // Narrow the Object reference to a POA reference - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (obj.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; - - // Get the POAManager of RootPOA + // CORBA::Environment env; - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_TRY_ENV); - - ACE_TRY_CHECK; - - CORBA::PolicyList policies (4); - policies.length (4); - - // ID Assignment Policy - policies[0] = - root_poa->create_id_assignment_policy (PortableServer::USER_ID, ACE_TRY_ENV); - ACE_TRY_CHECK; - - // Lifespan Policy - policies[1] = - root_poa->create_lifespan_policy (PortableServer::PERSISTENT, ACE_TRY_ENV); - ACE_TRY_CHECK; - - // Request Processing Policy - policies[2] = - root_poa->create_request_processing_policy (PortableServer::USE_SERVANT_MANAGER, ACE_TRY_ENV); - ACE_TRY_CHECK; - - PortableServer::POA_var first_poa; - { - // Servant Retention Policy - policies[3] = - root_poa->create_servant_retention_policy (PortableServer::RETAIN, ACE_TRY_ENV); - ACE_TRY_CHECK; + ACE_DECLARE_NEW_CORBA_ENV; - ACE_CString name = "firstPOA"; + // Initialize the ORB. + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, 0, ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - // Create firstPOA as the child of RootPOA with the above policies - // firstPOA will use SERVANT_ACTIVATOR because of RETAIN policy. - first_poa = root_poa->create_POA (name.c_str (), - poa_manager.in (), - policies, - ACE_TRY_ENV); - ACE_TRY_CHECK; + int result = parse_args (argc, argv); + if (result != 0) + return result; + + // Get an Object reference to RootPOA. + CORBA::Object_var obj = + orb->resolve_initial_references ("RootPOA"); + + // Narrow the Object reference to a POA reference + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (obj.in (), ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - } + // Get the POAManager of RootPOA - PortableServer::POA_var second_poa; - { - // Servant Retention Policy - policies[3] = - root_poa->create_servant_retention_policy (PortableServer::NON_RETAIN, ACE_TRY_ENV); - ACE_TRY_CHECK; - - ACE_CString name = "secondPOA"; - - // Create secondPOA as child of RootPOA with the above policies - // secondPOA will use a SERVANT_LOCATOR because of NON_RETAIN - // policy. - second_poa = root_poa->create_POA (name.c_str (), - poa_manager.in (), - policies, - ACE_TRY_ENV); - ACE_TRY_CHECK; + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_TRY_ENV); - } + ACE_CHECK_RETURN (-1); - // Destroy the policy objects as they have been passed to - // create_POA and no longer needed. - for (CORBA::ULong i = 0; - i < policies.length () && ACE_TRY_ENV.exception () == 0; - ++i) - { - CORBA::Policy_ptr policy = policies[i]; - policy->destroy (ACE_TRY_ENV); - ACE_TRY_CHECK; - } + CORBA::PolicyList policies (4); + policies.length (4); + // ID Assignment Policy + policies[0] = + root_poa->create_id_assignment_policy (PortableServer::USER_ID, ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + // Lifespan Policy + policies[1] = + root_poa->create_lifespan_policy (PortableServer::PERSISTENT, ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - MyFooServantActivator servant_activator_impl (orb.in ()); - PortableServer::ServantActivator_var servant_activator = - servant_activator_impl._this (ACE_TRY_ENV); - ACE_TRY_CHECK; + // Request Processing Policy + policies[2] = + root_poa->create_request_processing_policy (PortableServer::USE_SERVANT_MANAGER, ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - // Set MyFooServantActivator object as the servant_manager of - // firstPOA. + PortableServer::POA_var first_poa; + { + // Servant Retention Policy + policies[3] = + root_poa->create_servant_retention_policy (PortableServer::RETAIN, ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + ACE_CString name = "firstPOA"; + + // Create firstPOA as the child of RootPOA with the above policies + // firstPOA will use SERVANT_ACTIVATOR because of RETAIN policy. + first_poa = root_poa->create_POA (name.c_str (), + poa_manager.in (), + policies, + ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + } + + PortableServer::POA_var second_poa; + { + // Servant Retention Policy + policies[3] = + root_poa->create_servant_retention_policy (PortableServer::NON_RETAIN, ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + ACE_CString name = "secondPOA"; + + // Create secondPOA as child of RootPOA with the above policies + // secondPOA will use a SERVANT_LOCATOR because of NON_RETAIN + // policy. + second_poa = root_poa->create_POA (name.c_str (), + poa_manager.in (), + policies, + ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + } + + // Destroy the policy objects as they have been passed to + // create_POA and no longer needed. + for (CORBA::ULong i = 0; + i < policies.length () && ACE_TRY_ENV.exception () == 0; + ++i) + { + CORBA::Policy_ptr policy = policies[i]; + policy->destroy (ACE_TRY_ENV); + } + ACE_CHECK_RETURN (-1); - first_poa->set_servant_manager (servant_activator.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; + MyFooServantActivator servant_activator_impl (orb.in ()); + PortableServer::ServantActivator_var servant_activator = + servant_activator_impl._this (ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - // Create a reference with user created ID in firstPOA which uses - // the MyFooServantActivator. + // Set MyFooServantActivator object as the servant_manager of + // firstPOA. - PortableServer::ObjectId_var first_foo_oid = - PortableServer::string_to_ObjectId ("firstFoo"); + first_poa->set_servant_manager (servant_activator.in (), ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - CORBA::Object_var first_foo = - first_poa->create_reference_with_id (first_foo_oid.in (), "IDL:Foo:1.0", ACE_TRY_ENV); - ACE_TRY_CHECK; + // Create a reference with user created ID in firstPOA which uses + // the MyFooServantActivator. + PortableServer::ObjectId_var first_foo_oid = + PortableServer::string_to_ObjectId ("firstFoo"); - MyFooServantLocator servant_locator_impl (orb.in ()); - PortableServer::ServantLocator_var servant_locator = - servant_locator_impl._this (ACE_TRY_ENV); - ACE_TRY_CHECK; + CORBA::Object_var first_foo = + first_poa->create_reference_with_id (first_foo_oid.in (), "IDL:Foo:1.0", ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + MyFooServantLocator servant_locator_impl (orb.in ()); + PortableServer::ServantLocator_var servant_locator = + servant_locator_impl._this (ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - // Set MyFooServantLocator object as the servant Manager of - // secondPOA. - second_poa->set_servant_manager (servant_locator.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; - // Try to create a reference with user created ID in second_poa - // which uses MyFooServantLocator. + // Set MyFooServantLocator object as the servant Manager of + // secondPOA. + second_poa->set_servant_manager (servant_locator.in (), ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - PortableServer::ObjectId_var second_foo_oid = - PortableServer::string_to_ObjectId ("secondFoo"); + // Try to create a reference with user created ID in second_poa + // which uses MyFooServantLocator. - CORBA::Object_var second_foo = - second_poa->create_reference_with_id (second_foo_oid.in (), - "IDL:Foo:1.0", ACE_TRY_ENV); - ACE_TRY_CHECK; + PortableServer::ObjectId_var second_foo_oid = + PortableServer::string_to_ObjectId ("secondFoo"); - // Invoke object_to_string on the references created in firstPOA and - // secondPOA. + CORBA::Object_var second_foo = + second_poa->create_reference_with_id (second_foo_oid.in (), + "IDL:Foo:1.0", ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - CORBA::String_var first_foo_ior = - orb->object_to_string (first_foo.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; + // Invoke object_to_string on the references created in firstPOA and + // secondPOA. + CORBA::String_var first_foo_ior = + orb->object_to_string (first_foo.in (), ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - CORBA::String_var second_foo_ior = - orb->object_to_string (second_foo.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; + + CORBA::String_var second_foo_ior = + orb->object_to_string (second_foo.in (), ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - // Print the ior's of first_foo and second_foo. + // Print the ior's of first_foo and second_foo. - ACE_DEBUG((LM_DEBUG,"%s\n%s\n", - first_foo_ior.in (), - second_foo_ior.in ())); + ACE_DEBUG((LM_DEBUG,"%s\n%s\n", + first_foo_ior.in (), + second_foo_ior.in ())); - int write_result = write_iors_to_file (first_foo_ior.in (), - second_foo_ior.in ()); - if (write_result != 0) - return write_result; + int write_result = write_iors_to_file (first_foo_ior.in (), + second_foo_ior.in ()); + if (write_result != 0) + return write_result; - // Set the poa_manager state to active, ready to process requests. - poa_manager->activate (ACE_TRY_ENV); - ACE_TRY_CHECK; + // Set the poa_manager state to active, ready to process requests. + poa_manager->activate (ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); - // Run the ORB. - if (orb->run () == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "CORBA::ORB::run"), -1); + // Run the ORB. + if (orb->run () == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "CORBA::ORB::run"), -1); - // Destroy the root_poa and also first_poa and second_poa + // Destroy the root_poa and also first_poa and second_poa - root_poa->destroy (1, - 1, - ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught in main"); - return -1; - } - ACE_ENDTRY; + root_poa->destroy (1, + 1, + ACE_TRY_ENV); ACE_CHECK_RETURN (-1); return 0; } + |