/* Releases @servant object and finally destroys @orb. If error * occures @ev points to exception object on return. */ static void server_cleanup (CORBA_ORB orb, PortableServer_POA poa, CORBA_Object ref, CORBA_Environment *ev) { PortableServer_ObjectId *objid = NULL; objid = PortableServer_POA_reference_to_id (poa, ref, ev); if (etk_raised_exception(ev)) return; /* Servant: deactivatoin - will invoke __fini destructor */ PortableServer_POA_deactivate_object (poa, objid, ev); if (etk_raised_exception(ev)) return; PortableServer_POA_destroy (poa, TRUE, FALSE, ev); if (etk_raised_exception(ev)) return; CORBA_free (objid); CORBA_Object_release ((CORBA_Object) poa, ev); if (etk_raised_exception(ev)) return; CORBA_Object_release (ref, ev); if (etk_raised_exception(ev)) return; /* ORB: tear down the ORB */ if (orb != CORBA_OBJECT_NIL) { /* going to destroy orb.. */ CORBA_ORB_destroy(orb, ev); if (etk_raised_exception(ev)) return; } }
static void server_cleanup (CORBA_ORB orb, PortableServer_POA poa, CORBA_Object ref, CORBA_Environment *ev) { PortableServer_ObjectId *objid = NULL; objid = PortableServer_POA_reference_to_id (poa, ref, ev); if (etk_raised_exception(ev)) return; PortableServer_POA_deactivate_object (poa, objid, ev); if (etk_raised_exception(ev)) return; PortableServer_POA_destroy (poa, TRUE, FALSE, ev); if (etk_raised_exception(ev)) return; CORBA_free (objid); CORBA_Object_release ((CORBA_Object) poa, ev); if (etk_raised_exception(ev)) return; CORBA_Object_release (ref, ev); if (etk_raised_exception(ev)) return; if (orb != CORBA_OBJECT_NIL) { CORBA_ORB_destroy(orb, ev); if (etk_raised_exception(ev)) return; } }
*/static void server_init (int *argc_ptr, char *argv[], CORBA_ORB *orb, PortableServer_POA *poa, CORBA_Environment *ev) { PortableServer_POA rootpoa = CORBA_OBJECT_NIL; PortableServer_POAManager rootpoa_mgr = CORBA_OBJECT_NIL; CORBA_Environment local_ev[1]; CORBA_exception_init(local_ev); /* init signal handling */ signal(SIGTERM, server_shutdown); /* create Object Request Broker (ORB) */ (*orb) = CORBA_ORB_init(argc_ptr, argv, "orbit-local-mt-orb", ev); if (etk_raised_exception(ev)) goto failed_orb; rootpoa = (PortableServer_POA) CORBA_ORB_resolve_initial_references(*orb, "RootPOA", ev); if (etk_raised_exception(ev)) goto failed_poa; rootpoa_mgr = PortableServer_POA__get_the_POAManager(rootpoa, ev); if (etk_raised_exception(ev)) goto failed_poamanager; /* create default POA with specific policies */ (*poa) = server_create_multi_threaded_poa (*orb, rootpoa, rootpoa_mgr, ev); if (etk_raised_exception(ev)) goto failed_child_poa; PortableServer_POAManager_activate(rootpoa_mgr, ev); if (etk_raised_exception(ev)) goto failed_activation; CORBA_Object_release ((CORBA_Object) rootpoa_mgr, ev); return; failed_activation: failed_child_poa: failed_poamanager: CORBA_Object_release ((CORBA_Object) rootpoa_mgr, local_ev); failed_poa: CORBA_ORB_destroy(*orb, local_ev); failed_orb: return; }
static void main_func(int argc, char *argv[]) { PortableServer_POA poa = CORBA_OBJECT_NIL; PortableServer_POAManager poa_manager = CORBA_OBJECT_NIL; CORBA_Environment ev[1]; CORBA_exception_init(ev); /* init signal handling */ signal(SIGINT, server_shutdown); signal(SIGTERM, server_shutdown); /* create Object Request Broker (ORB) */ global_orb = CORBA_ORB_init(&argc, argv, "orbit-local-treaded-orb", ev); g_assert (!ORBIT_EX (ev)); /* get Portable Object Adaptor (POA) */ poa = (PortableServer_POA) CORBA_ORB_resolve_initial_references(global_orb, "RootPOA", ev); g_assert (!ORBIT_EX (ev)); /* activate POA Manager */ poa_manager = PortableServer_POA__get_the_POAManager(poa, ev); g_assert (!ORBIT_EX (ev)); PortableServer_POAManager_activate(poa_manager, ev); g_assert (!ORBIT_EX (ev)); LEAK_DETECT_WITH_TOLERANCE (1000, test_ORBit_alloc (), 50); LEAK_DETECT_WITH_TOLERANCE (1000, test_ORBit_sequence (), 50); LEAK_DETECT_WITH_TOLERANCE (1000, test_activate_deactivate (poa, ev), 50); /* tear down the ORB */ CORBA_Object_release ((CORBA_Object) poa_manager, ev); g_assert (!ORBIT_EX (ev)); CORBA_Object_release ((CORBA_Object) poa, ev); g_assert (!ORBIT_EX (ev)); if (global_orb != CORBA_OBJECT_NIL) { /* going to destroy orb.. */ CORBA_ORB_destroy(global_orb, ev); g_assert (!ORBIT_EX (ev)); } }
static void client_cleanup (CORBA_ORB orb, CORBA_Object service, CORBA_Environment *ev) { CORBA_Object_release(service, ev); if (etk_raised_exception(ev)) return; if (orb != CORBA_OBJECT_NIL) { CORBA_ORB_destroy(orb, ev); if (etk_raised_exception(ev)) return; } }
*/static void server_init (int *argc_ptr, char *argv[], CORBA_ORB *orb, PortableServer_POA *poa, CORBA_Environment *ev) { PortableServer_POAManager poa_manager = CORBA_OBJECT_NIL; CORBA_Environment local_ev[1]; CORBA_exception_init(local_ev); /* init signal handling */ signal(SIGINT, server_shutdown); signal(SIGTERM, server_shutdown); /* create Object Request Broker (ORB) */ (*orb) = CORBA_ORB_init(argc_ptr, argv, "orbit-local-mt-orb", ev); if (etk_raised_exception(ev)) goto failed_orb; (*poa) = (PortableServer_POA) CORBA_ORB_resolve_initial_references(*orb, "RootPOA", ev); if (etk_raised_exception(ev)) goto failed_poa; poa_manager = PortableServer_POA__get_the_POAManager(*poa, ev); if (etk_raised_exception(ev)) goto failed_poamanager; PortableServer_POAManager_activate(poa_manager, ev); if (etk_raised_exception(ev)) goto failed_activation; CORBA_Object_release ((CORBA_Object) poa_manager, ev); return; failed_activation: failed_poamanager: CORBA_Object_release ((CORBA_Object) poa_manager, local_ev); failed_poa: CORBA_ORB_destroy(*orb, local_ev); failed_orb: return; }
/* Releases @servant object and finally destroys @orb. If error * occures @ev points to exception object on return. */ static void client_cleanup (CORBA_ORB orb, CORBA_Object service, CORBA_Environment *ev) { /* releasing managed object */ CORBA_Object_release(service, ev); if (etk_raised_exception(ev)) return; /* tear down the ORB */ if (orb != CORBA_OBJECT_NIL) { /* going to destroy orb.. */ CORBA_ORB_destroy(orb, ev); if (etk_raised_exception(ev)) return; } }
/** * matecomponent_activation_debug_shutdown: * * A debugging function to shutdown the ORB and process * any reference count leaks that may have occurred. * * Return value: FALSE if there were leaks detected, else TRUE **/ gboolean matecomponent_activation_debug_shutdown (void) { int retval = TRUE; CORBA_Environment ev; if (is_initialized) { CORBA_exception_init (&ev); matecomponent_activation_base_service_debug_shutdown (&ev); if (ev._major != CORBA_NO_EXCEPTION) { retval = FALSE; } if (matecomponent_activation_context != CORBA_OBJECT_NIL) { CORBA_Object_release ( (CORBA_Object) matecomponent_activation_context, &ev); matecomponent_activation_context = CORBA_OBJECT_NIL; } matecomponent_activation_release_corba_client (); if (object_directory != CORBA_OBJECT_NIL) { CORBA_Object_release (object_directory, &ev); object_directory = CORBA_OBJECT_NIL; } if (matecomponent_activation_orb != CORBA_OBJECT_NIL) { CORBA_ORB_destroy (matecomponent_activation_orb, &ev); if (ev._major != CORBA_NO_EXCEPTION) { retval = FALSE; } CORBA_Object_release ( (CORBA_Object) matecomponent_activation_orb, &ev); is_initialized = FALSE; } CORBA_exception_free (&ev); } return retval; }
int main (int argc, char *argv[]) { CORBA_Environment ev; free (malloc (8)); g_thread_init (NULL); CORBA_exception_init (&ev); timer = g_timer_new (); g_timer_start (timer); g_timer_reset (timer); orb = CORBA_ORB_init (&argc, argv, "matecorba-local-orb", &ev); g_assert (ev._major == CORBA_NO_EXCEPTION); fprintf (stderr, "ORB: init took %g(ms)\n", (elapsed_time = g_timer_elapsed (timer, NULL)) * 1000.0); bogomark += elapsed_time; test_copy (); test_activation (); g_timer_reset (timer); CORBA_ORB_destroy (orb, &ev); g_assert (ev._major == CORBA_NO_EXCEPTION); fprintf (stderr, "ORB: destroy took %g(ms)\n", (elapsed_time = g_timer_elapsed (timer, NULL)) * 1000.0); bogomark += elapsed_time; g_timer_reset (timer); CORBA_Object_release ((CORBA_Object) orb, &ev); g_assert (ev._major == CORBA_NO_EXCEPTION); g_timer_destroy (timer); fprintf (stderr, "Overall bogomark %g\n", 1000.0 / bogomark); return 0; }
/* * This is neccessary to clean up any remaining UDS * and to flush any remaining oneway traffic in buffers. */ static void shutdown_orb (void) { CORBA_ORB orb; CORBA_Environment ev; if (!(orb = _MateCORBA_orb)) return; init_level = 1; /* clobber it */ atexit_shutdown = TRUE; CORBA_exception_init (&ev); CORBA_ORB_destroy (orb, &ev); MateCORBA_RootObject_release (orb); CORBA_exception_free (&ev); atexit_shutdown = FALSE; }
int main (int argc, char **argv) { CORBA_Environment ev[1]; PortableServer_POA rootpoa, poa; CORBA_exception_init (ev); orb = CORBA_ORB_init (&argc, argv, "", ev); rootpoa = (PortableServer_POA) CORBA_ORB_resolve_initial_references (orb, "RootPOA", ev); g_assert (ev->_major == CORBA_NO_EXCEPTION); { poa = ORBit_POA_new_from (orb, rootpoa, "Foo", NULL, ev); g_assert (ev->_major == CORBA_NO_EXCEPTION); PortableServer_POA_destroy (poa, FALSE, FALSE, ev); CORBA_Object_release ((CORBA_Object) poa, ev); } CORBA_Object_release ((CORBA_Object) rootpoa, ev); CORBA_ORB_destroy (orb, ev); g_assert (ev->_major == CORBA_NO_EXCEPTION); CORBA_Object_release ((CORBA_Object) orb, ev); g_assert (ev->_major == CORBA_NO_EXCEPTION); CORBA_exception_free (ev); fprintf (stderr, "PASS: test-poa\n"); return 0; }
int main (int argc, char *argv[]) { CORBA_Environment ev; CORBA_ORB orb; CORBA_double rv; char buf[30]; int i; int niters = 1000; CORBA_exception_init(&ev); orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &ev); /* read IOR from command line as first argument */ if(argc < 2) { g_print ("ERROR, usage: %s <ior> [<#iterations>]\n", argv[0]); return 1; } if (argv[1][0] == '$') argv[1] = getenv (argv[1]+1); /* read (optional) number of iterations from command line as * second argument (100) */ if(argc == 3) niters = atoi(argv[2]); /* bind to object */ echo_client = CORBA_ORB_string_to_object(orb, argv[1], &ev); ABORT_IF_EXCEPTION (&ev, "cannot bind to object"); g_assert (echo_client!=NULL); /* Iterate various times. Each time the client invokes * 'echoString(..)' a new reference to service is returned which * is used for next loop. At end of each loop the old * obj. reference is released. */ for(i = 0; i < niters; i++) { /* Method call without any argument, usefull to tell * lifeness */ Echo_doNothing(echo_client, &ev); ABORT_IF_EXCEPTION (&ev, "service raised exception "); /* Ask echo-service to print string 'buf' on console. The * service returns random double float value in 'vr' */ g_snprintf(buf, sizeof(buf), "Hello, world [%d]", i); bec = Echo_echoString(echo_client, buf, &rv, &ev); ABORT_IF_EXCEPTION (&ev, "service raised exception "); /* print random value generated by echo-service */ if ( !echo_opt_quiet ) g_message("[client] %g", rv); /* Asynchronous/oneway method call, the function returns * immediately. Usefull for log-message transfer */ Echo_doOneWay(echo_client, "log message ", &ev); ABORT_IF_EXCEPTION (&ev, "service raised exception "); /* release first object reference and use the new one for * next loop */ CORBA_Object_release(echo_client, &ev); ABORT_IF_EXCEPTION (&ev, "service raised exception "); /* swap object references */ echo_client = bec; bec = CORBA_OBJECT_NIL; } /* release initial object reference */ CORBA_Object_release(echo_client, &ev); ABORT_IF_EXCEPTION (&ev, "service raised exception "); /* shutdown ORB, shutdown IO channels */ CORBA_ORB_shutdown (orb, FALSE, &ev); ABORT_IF_EXCEPTION(&ev, "ORB shutdown ..."); /* destroy local ORB */ CORBA_ORB_destroy(orb, &ev); ABORT_IF_EXCEPTION (&ev, "destroying local ORB raised exception"); return 0; }