int ACE_TMAIN(int argc, ACE_TCHAR *argv[]) { try { CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); if (parse_args(argc, argv) != 0) return 1; // Get the RTORB. CORBA::Object_var obj = orb->resolve_initial_references ("RTORB"); RTCORBA::RTORB_var rtorb = RTCORBA::RTORB::_narrow (obj.in()); //create the private connections policy. This means that every connection // to the server uses his own socket. CORBA::PolicyList policies (1); policies.length (1); policies[0] = rtorb->create_private_connection_policy (); CORBA::Object_var pol_current_object = orb->resolve_initial_references ("PolicyCurrent"); CORBA::PolicyCurrent_var policy_current = CORBA::PolicyCurrent::_narrow (pol_current_object.in ()); if (CORBA::is_nil (policy_current.in ())) { ACE_ERROR ((LM_ERROR, "ERROR: Nil policy current\n")); return 1; } policy_current->set_policy_overrides (policies, CORBA::ADD_OVERRIDE); Test::Hello_var *hello_array = 0; ACE_NEW_RETURN (hello_array, Test::Hello_var [cache_size], -1); int iter = 1; for (iter = 1; iter <= cache_size; ++iter) { char object_string[256]; char reference_string[256]; ACE_OS::sprintf (reference_string, "TransportCacheTest%d", iter); ACE_OS::sprintf (object_string, "corbaloc:iiop:localhost:%d/", port_nr); ACE_OS::strcat (object_string, reference_string); CORBA::Object_var hello_obj = orb->string_to_object (object_string); orb->register_initial_reference (reference_string, hello_obj.in ()); CORBA::String_var ior_string = orb->object_to_string (hello_obj.in()); ACE_DEBUG((LM_DEBUG, ACE_TEXT("IOR string for reference %d : %C\n"), iter, ior_string.in ())); hello_array[iter-1] = Test::Hello::_narrow(hello_obj.in ()); } //now we've got the references -> call each and everyone of them for (iter = 0; iter < cache_size; ++iter) { Test::Hello_var hello = hello_array[iter]; if (CORBA::is_nil (hello.in ())) { ACE_ERROR_RETURN ((LM_DEBUG, ACE_TEXT ("Nil Test::Hello reference\n")), 1); } CORBA::String_var the_string = hello->get_string (); ACE_DEBUG ((LM_DEBUG, "(%P|%t) - string returned <%C> from reference %d\n", the_string.in (), iter + 1)); } //shutdown the server if (iter >= 0) hello_array[0]->shutdown (); orb->destroy (); } catch (const CORBA::Exception& ex) { ex._tao_print_exception ("Exception caught:"); return 1; } return 0; }
int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { try { // Initialize the ORB first. CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); CORBA::Object_var object = orb->resolve_initial_references ("RTORB"); RTCORBA::RTORB_var rtorb = RTCORBA::RTORB::_narrow (object.in ()); /* * The following code should be reenabled once the OMG spec has * been fixed such that a RTCORBA::PriorityModelPolicy can be * created by using the ORB::create_policy interface. * { RTCORBA::PriorityModelPolicy_var policy1 = rtorb->create_priority_model_policy (RTCORBA::CLIENT_PROPAGATED, RTCORBA::minPriority); CORBA::Any policy_value; policy_value <<= RTCORBA::CLIENT_PROPAGATED; policy_value <<= RTCORBA::minPriority; CORBA::Policy_var policy = orb->create_policy (RTCORBA::PRIORITY_MODEL_POLICY_TYPE, policy_value); RTCORBA::PriorityModelPolicy_var policy2 = RTCORBA::PriorityModelPolicy::_narrow (policy.in ()); ACE_ASSERT (policy1->priority_model () == policy2->priority_model ()); ACE_ASSERT (policy1->server_priority () == policy2->server_priority ()); } */ { RTCORBA::ThreadpoolId poolid = 0; RTCORBA::ThreadpoolPolicy_var policy1 = rtorb->create_threadpool_policy (poolid); CORBA::Any policy_value; policy_value <<= poolid; CORBA::Policy_var policy = orb->create_policy (RTCORBA::THREADPOOL_POLICY_TYPE, policy_value); RTCORBA::ThreadpoolPolicy_var policy2 = RTCORBA::ThreadpoolPolicy::_narrow (policy.in ()); ACE_ASSERT (policy1->threadpool () == policy2->threadpool ()); } { RTCORBA::ProtocolList empty_protocols; RTCORBA::ServerProtocolPolicy_var policy1 = rtorb->create_server_protocol_policy (empty_protocols); CORBA::Any policy_value; policy_value <<= empty_protocols; CORBA::Policy_var policy = orb->create_policy (RTCORBA::SERVER_PROTOCOL_POLICY_TYPE, policy_value); RTCORBA::ServerProtocolPolicy_var policy2 = RTCORBA::ServerProtocolPolicy::_narrow (policy.in ()); RTCORBA::ProtocolList_var protocols1 = policy1->protocols (); RTCORBA::ProtocolList_var protocols2 = policy2->protocols (); ACE_ASSERT (protocols1->length () == protocols2->length ()); } { RTCORBA::ProtocolList empty_protocols; RTCORBA::ClientProtocolPolicy_var policy1 = rtorb->create_client_protocol_policy (empty_protocols); CORBA::Any policy_value; policy_value <<= empty_protocols; CORBA::Policy_var policy = orb->create_policy (RTCORBA::CLIENT_PROTOCOL_POLICY_TYPE, policy_value); RTCORBA::ClientProtocolPolicy_var policy2 = RTCORBA::ClientProtocolPolicy::_narrow (policy.in ()); RTCORBA::ProtocolList_var protocols1 = policy1->protocols (); RTCORBA::ProtocolList_var protocols2 = policy2->protocols (); ACE_ASSERT (protocols1->length () == protocols2->length ()); } { RTCORBA::PrivateConnectionPolicy_var policy1 = rtorb->create_private_connection_policy (); CORBA::Any policy_value; CORBA::Policy_var policy = orb->create_policy (RTCORBA::PRIVATE_CONNECTION_POLICY_TYPE, policy_value); RTCORBA::PrivateConnectionPolicy_var policy2 = RTCORBA::PrivateConnectionPolicy::_narrow (policy.in ()); } { RTCORBA::PriorityBands empty_priority_bands; RTCORBA::PriorityBandedConnectionPolicy_var policy1 = rtorb->create_priority_banded_connection_policy (empty_priority_bands); CORBA::Any policy_value; policy_value <<= empty_priority_bands; CORBA::Policy_var policy = orb->create_policy (RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE, policy_value); RTCORBA::PriorityBandedConnectionPolicy_var policy2 = RTCORBA::PriorityBandedConnectionPolicy::_narrow (policy.in ()); RTCORBA::PriorityBands_var priority_bands1 = policy1->priority_bands (); RTCORBA::PriorityBands_var priority_bands2 = policy2->priority_bands (); ACE_ASSERT (priority_bands1->length () == priority_bands2->length ()); } ACE_DEBUG ((LM_DEBUG, "%s successful\n", argv[0])); orb->destroy (); } catch (const CORBA::Exception& ex) { ex._tao_print_exception ("Exception caught"); return -1; } return 0; }