static void server_run (CORBA_ORB orb, CORBA_Environment *ev) { CORBA_ORB_run(orb, ev); if (etk_raised_exception(ev)) return; }
/* Entering main loop @orb handles incoming request and delegates to * servants. If error occures @ev points to exception object on * return. */ static void server_run (CORBA_ORB orb, CORBA_Environment *ev) { /* enter main loop until SIGINT or SIGTERM */ CORBA_ORB_run(orb, ev); if (etk_raised_exception(ev)) return; /* user pressed SIGINT or SIGTERM and in signal handler * CORBA_ORB_shutdown(.) has been called */ }
static PyObject * pycorba_orb_run(PyCORBA_ORB *self) { CORBA_Environment ev; CORBA_exception_init(&ev); pymatecorba_begin_allow_threads; CORBA_ORB_run(self->orb, &ev); pymatecorba_end_allow_threads; if (pymatecorba_check_ex(&ev)) return NULL; Py_INCREF(Py_None); return Py_None; }
void corba_init(void *p) { PortableServer_ObjectId objid = {0, sizeof("Freeamp-ORBit"), "Freeamp-ORBit"}; PortableServer_POA poa; CORBA_Environment ev; char *retval; CORBA_ORB orb; FILE * ofp; int argc=1; char *argv; char *homedir; char iorfile[1024]; char tmpbuf[1] = {0}; tptr = p; // :TODO: this should be fixed to pass on argv? argv=&tmpbuf[0]; CORBA_exception_init(&ev); orb = CORBA_ORB_init(&argc, &argv, "orbit-local-orb", &ev); POA_Freeamp__init(&poa_freeamp_servant, &ev); poa = (PortableServer_POA)CORBA_ORB_resolve_initial_references(orb, "RootPOA", &ev); PortableServer_POAManager_activate(PortableServer_POA__get_the_POAManager(poa, &ev), &ev); PortableServer_POA_activate_object_with_id(poa, &objid, &poa_freeamp_servant, &ev); freeamp_client = PortableServer_POA_servant_to_reference(poa, &poa_freeamp_servant, &ev); if (!freeamp_client) { printf("Cannot get objref\n"); return; } homedir = getenv("HOME"); strncpy(iorfile, homedir, 1024); // :TODO: add error checking strncat(iorfile, "/.freeamp.ior", 1024); retval = CORBA_ORB_object_to_string(orb, freeamp_client, &ev); ofp = fopen(iorfile,"w"); fprintf(ofp,"%s", retval); fclose(ofp); CORBA_free(retval); fprintf(stdout,"FreeAMP-CORBA Ready. | Waiting for commands.\n"); fflush(stdout); CORBA_ORB_run(orb, &ev); }
int main (int argc, char *argv[]) { CORBA_ORB orb; CORBA_Environment* ev; PortableServer_ObjectId* oid; passlong account; PortableServer_POA root_poa; PortableServer_POAManager pm; CORBA_char* ior; ev = g_new0(CORBA_Environment,1); CORBA_exception_init(ev); /* Initialize the orb. The initialization routine checks the command * line parameters for directives that affect the orb */ orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", ev); root_poa = (PortableServer_POA) CORBA_ORB_resolve_initial_references(orb, "RootPOA", ev); /* ask for instanciation of one object account */ account = impl_passlong__create(root_poa, ev); /* Here we get the IOR for the acc object. Our "client" will use * the IOR to find the server to connect to */ ior = CORBA_ORB_object_to_string(orb, account, ev); /* print out the IOR, just so you can see what it looks like */ printf ("%s\n", ior); fflush(stdout); pm = PortableServer_POA__get_the_POAManager(root_poa, ev); PortableServer_POAManager_activate(pm,ev); CORBA_ORB_run(orb, ev); return (0); }
JNIEXPORT void JNICALL Java_org_pgj_chanells_corba_CORBAChanellWorker_run (JNIEnv * javaenv, jobject threadobj){ JNIEnv _javaenv = *javaenv; global_javaenv = javaenv; //--------------------------------------- // initialize class and method references //--------------------------------------- //chanell worker class and method ID`s chanell_worker_class = (*javaenv)->FindClass(javaenv, "org/pgj/chanells/corba/CORBAChanellWorker"); chanell_create_result = (*javaenv)->GetStaticMethodID(javaenv, chanell_worker_class, "createResultBean", "()Lorg/pgj/messages/Result;"); chanell_create_callreq = (*javaenv)->GetStaticMethodID(javaenv, chanell_worker_class, "createCallRequestBean", "()Lorg/pgj/messages/CallRequest;"); chanell_create_exception = (*javaenv)->GetStaticMethodID(javaenv, chanell_worker_class, "createExceptionBean", "()Lorg/pgj/messages/Exception;"); chanell_set_client = (*javaenv)->GetMethodID(javaenv, chanell_worker_class, "setClient","(ILorg/pgj/messages/Message;)V"); chanell_msg_arrival = (*javaenv)->GetMethodID(javaenv, chanell_worker_class, "msgArrival", "(Lorg/pgj/messages/Message;)V"); chanell_log = (*javaenv)->GetMethodID(javaenv, chanell_worker_class, "nativeLog", "(ILjava/lang/String;)V"); get_message = (*javaenv)->GetMethodID(javaenv, chanell_worker_class, "getMessage", "(Lorg/pgj/chanells/corba/CORBAClient;)Lorg/pgj/messages/Message;"); get_client = (*javaenv)->GetMethodID(javaenv, chanell_worker_class, "getClient", "(I)Lorg/pgj/chanells/corba/CORBAClient;"); //type mapper ID`s typemapper_interface = (*javaenv)->FindClass(javaenv, "org/pgj/typemapping/TypeMapper"); typemapper_map_method = (*javaenv)->GetMethodID(javaenv, typemapper_interface, "map", "([BLjava/lang/String;)Lorg/pgj/typemapping/Field;"); //message class message_class = (*javaenv)->FindClass(javaenv, STR_CLASS_MESSAGE); message_set_sid = (*javaenv)->GetMethodID(javaenv, message_class, "setSid", "(Ljava/lang/Object;)V"); message_get_sid = (*javaenv)->GetMethodID(javaenv, message_class, "getSid", "()Ljava/lang/Object;"); //result bean ID`s result_class = (*javaenv)->FindClass(javaenv, STR_CLASS_RESULT); result_setsize = (*javaenv)->GetMethodID(javaenv, result_class, "setSize","(II)V"); result_set =(*javaenv)->GetMethodID(javaenv, result_class, "set","(IILorg/pgj/typemapping/Field;)V"); result_get = (*javaenv)->GetMethodID(javaenv, result_class, "get","(II)Lorg/pgj/typemapping/Field;"); result_getrows = (*javaenv)->GetMethodID(javaenv, result_class, "getRows","()I"); result_getcolumns = (*javaenv)->GetMethodID(javaenv, result_class, "getColumns","()I"); //call request bean ID`s callreq_class = (*javaenv)->FindClass(javaenv, STR_CLASS_CALLREQ); callreq_set_method_name = (*javaenv)->GetMethodID(javaenv, callreq_class, "setMethodname", "(Ljava/lang/String;)V"); callreq_set_class_name = (*javaenv)->GetMethodID(javaenv, callreq_class, "setClassname", "(Ljava/lang/String;)V"); callreq_add_param = (*javaenv)->GetMethodID(javaenv, callreq_class, "addParam", "(Lorg/pgj/typemapping/Field;)V"); //exception bean ID`s error_class = (*javaenv)->FindClass(javaenv, STR_CLASS_EXCEPTION); error_get_message = (*javaenv)->GetMethodID(javaenv, error_class, "getMessage","()Ljava/lang/String;"); error_set_message = (*javaenv)->GetMethodID(javaenv, error_class, "getMessage","()Ljava/lang/String;"); error_get_stacktrace = (*javaenv)->GetMethodID(javaenv, error_class, "getStackTrace","()Ljava/lang/String;"); error_set_stacktrace = (*javaenv)->GetMethodID(javaenv, error_class, "setStackTrace","(Ljava/lang/String;)V"); error_get_classname = (*javaenv)->GetMethodID(javaenv, error_class, "getExceptionClassName","()Ljava/lang/String;"); error_set_classname = (*javaenv)->GetMethodID(javaenv, error_class, "setExceptionClassName","(Ljava/lang/String;)V"); message_sql = (*javaenv)->FindClass(javaenv, STR_CLASS_SQL); message_sql_cursor = (*javaenv)->FindClass(javaenv, STR_CLASS_SQL_CURSOR); sql_fetch_get_cursorname = (*javaenv)->GetMethodID(javaenv, message_sql_cursor, "getCursorName","()Ljava/lang/String;"); sql_fetch_set_cursorname = (*javaenv)->GetMethodID(javaenv, message_sql_cursor, "setCursorName","(Ljava/lang/String;)V"); message_sql_open_wia_sql = (*javaenv)->FindClass(javaenv, STR_CLASS_SQL_OPEN_SQL); message_sql_close = (*javaenv)->FindClass(javaenv, STR_CLASS_SQL_CLOSE); message_sql_fetch = (*javaenv)->FindClass(javaenv, STR_CLASS_SQL_FETCH); field_class = (*javaenv)->FindClass(javaenv, STR_CLASS_FIELD); field_get = (*javaenv)->GetMethodID(javaenv, field_class, "get","()[B"); field_rdbmstype = (*javaenv)->GetMethodID(javaenv, field_class, "rdbmsType","()Ljava/lang/String;"); if(_javaenv->ExceptionOccurred(javaenv)){ return; } worker_nlog(javaenv, threadobj, WNL_DEBUG,"-----corba-----\n"); //------------ // Start CORBA //------------ CORBA_exception_init(&env); orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &env); poa = (PortableServer_POA) CORBA_ORB_resolve_initial_references(orb, "RootPOA", &env); poa_manager = PortableServer_POA__get_the_POAManager(poa, &env); PortableServer_POAManager_activate(poa_manager, &env); server = impl_org_pgj_corba_CallServer__create(poa, &env, javaenv, threadobj); worker_nlog(javaenv, threadobj, WNL_DEBUG,"starting orb\n"); //publish IOR { char* ior; jmethodID putIor; jclass workerclass; jbyteArray bior; gunichar ior_utf; worker_nlog(javaenv, threadobj, WNL_DEBUG, "critical area\n"); ior = CORBA_ORB_object_to_string(orb, server, &env); ior_utf = g_utf8_get_char(ior); bior = _javaenv->NewByteArray(javaenv, strlen(ior)); if(_javaenv->ExceptionCheck(javaenv)){ worker_nlog(javaenv, threadobj, WNL_FATAL, "problems"); return; } _javaenv->SetByteArrayRegion(javaenv, bior, 0, strlen(ior), ior); if(_javaenv->ExceptionCheck(javaenv)){ worker_nlog(javaenv, threadobj, WNL_ERROR, "error occured"); return; } workerclass = _javaenv->GetObjectClass(javaenv, threadobj); if(_javaenv->ExceptionCheck(javaenv)){ worker_nlog(javaenv, threadobj, WNL_ERROR, "problems"); return; } putIor = _javaenv->GetMethodID(javaenv, workerclass, "putIor", "([B)V"); if(_javaenv->ExceptionCheck(javaenv)){ worker_nlog(javaenv, threadobj, WNL_FATAL, "problems"); return; } worker_nlog(javaenv, threadobj, WNL_DEBUG, "publishing IOR"); _javaenv->CallObjectMethod(javaenv, threadobj, putIor, bior); if(_javaenv->ExceptionCheck(javaenv)){ worker_nlog(javaenv, threadobj, WNL_FATAL, "Error publishing IOR! Stoping!"); return; } worker_nlog(javaenv, threadobj, WNL_INFO, "IOR published successfuly"); } //publish IOR CORBA_ORB_run(orb, &env); worker_nlog(javaenv, threadobj, WNL_FATAL, "ORB run returned. There must be something problem here."); }
int main (int argc, char *argv[]) { CORBA_ORB orb; CORBA_Environment ev; CosNaming_NamingContext context; const char* progname = "matecorba-name-server"; #ifdef HAVE_SYSLOG openlog(progname, LOG_NDELAY | LOG_PID, LOG_DAEMON); syslog(LOG_INFO,"starting"); #endif #ifdef HAVE_SIGACTION { sigset_t empty_mask; struct sigaction act; sigemptyset(&empty_mask); act.sa_handler = signal_handler; act.sa_mask = empty_mask; act.sa_flags = 0; sigaction(SIGINT, &act, NULL); sigaction(SIGHUP, &act, NULL); sigaction(SIGSEGV, &act, NULL); sigaction(SIGABRT, &act, NULL); act.sa_handler = SIG_IGN; sigaction(SIGPIPE, &act, NULL); } #else signal(SIGINT, signal_handler); #ifdef SIGHUP signal(SIGHUP, signal_handler); #endif signal(SIGSEGV, signal_handler); signal(SIGABRT, signal_handler); #ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); #endif #endif CORBA_exception_init (&ev); orb = CORBA_ORB_init (&argc, argv, "matecorba-local-orb", &ev); { GOptionContext *context; GError *error = NULL; gboolean result; context = g_option_context_new(""); g_option_context_add_main_entries(context, goptions, GETTEXT_PACKAGE); result = g_option_context_parse(context, &argc, &argv, &error); g_option_context_free(context); if (!result) { g_warning("%s: bad arguments: %s\n", progname, error->message); g_error_free(error); exit(1); } } { PortableServer_POA root_poa; PortableServer_POAManager pm; root_poa = (PortableServer_POA) CORBA_ORB_resolve_initial_references (orb, "RootPOA", &ev); context = MateCORBA_CosNaming_NamingContextExt_create (root_poa, &ev); pm = PortableServer_POA__get_the_POAManager (root_poa, &ev); PortableServer_POAManager_activate (pm, &ev); CORBA_Object_release((CORBA_Object)pm, &ev); CORBA_Object_release((CORBA_Object)root_poa, &ev); } { CORBA_char *objstr; objstr = CORBA_ORB_object_to_string (orb, context, &ev); g_print ("%s\n", objstr); fflush (stdout); CORBA_free(objstr); } if ( opt_corbaloc_key ) { CORBA_sequence_CORBA_octet okey; okey._length = strlen(opt_corbaloc_key); okey._buffer = opt_corbaloc_key; MateCORBA_ORB_forw_bind(orb, &okey, context, &ev); } CORBA_ORB_run (orb, &ev); /* Don't release until done (dont know why) */ CORBA_Object_release (context, &ev); #ifdef HAVE_SYSLOG syslog(LOG_INFO, "exiting"); #endif return 0; }