*
*/
-
+#include <stdlib.h>
// origin orte headers
#include "orte.h"
// pregenerated header
-#include "jorte/org_ocera_orte_Domain.h"
-
+#include "jorte/org_ocera_orte_DomainApp.h"
+// enable TEST_STAGE run level
+#include "jorte/4all.h"
+// new data types
+#include "jorte/jorte_typedefs_defines.h"
+#include "jorte/jorte_protos_api.h"
+#include <inttypes.h>
+// /////////////////////////////////////////////////////////////////////
// create default application domain
-JNIEXPORT jint JNICALL
-Java_org_ocera_orte_Domain_jORTEDomainDefaultAppCreate
-(JNIEnv *env, jclass class, jint jdomain,jboolean jsusp)
+// /////////////////////////////////////////////////////////////////////
+JNIEXPORT jlong JNICALL
+Java_org_ocera_orte_DomainApp_jORTEDomainDefaultAppCreate
+(JNIEnv *env, jobject obj, jint jdomain, jboolean jsusp)
{
- jint d;
+ jlong d;
- printf(":c: jsem pred ORTEDomainDefaultAppCreate() \n");
-
- /* call the liborte function */
- d = (jint) ORTEDomainAppCreate((int)jdomain,
+ #ifdef TEST_STAGE
+ printf(":c: jsem pred ORTEDomainDefaultAppCreate() \n");
+ #endif
+ // call ORTE function
+ d = (jlong) ORTEDomainAppCreate((int)jdomain,
NULL,
NULL,
(Boolean) jsusp);
printf(":!c: ORTEDomainDefaultAppCreate() FAILED.. \n");
return 0;
}
- printf(":c: ORTEDomainDefautlAppCreate() ok.. + %d \n", d);
+ #ifdef TEST_STAGE
+ printf(":c: ORTEDomainDefautlAppCreate() ok.. + %#"PRIxPTR"\n", (intptr_t)d);
+ #endif
return (d);
}
+// //////////////////////////////////////////////////////////////////////
// create user application domain
-JNIEXPORT jint JNICALL
-Java_org_ocera_orte_Domain_jORTEDomainAppCreate
-(JNIEnv *env, jclass cls, jint jdomain,
- jint propHandle, jint eventsHandle, jboolean jsusp)
+// //////////////////////////////////////////////////////////////////////
+JNIEXPORT jlong JNICALL
+Java_org_ocera_orte_DomainApp_jORTEDomainAppCreate
+(JNIEnv *env, jobject obj,
+ jint jdomain,
+ jlong propHandle,
+ jlong eventsHandle,
+ jobject obj_de,
+ jboolean jsusp)
{
- jint d;
+ // jni varibles
+ JavaVM *jvm;
+ jclass cls;
+ jfieldID fid;
+ jlong d;
+ //
+ ORTEDomainAppEvents *dom_events;
+ JORTEDomainEventsContext_t *domain_events_cont;
- printf(":c: jsem pred ORTEDomainAppCreate() \n");
- /* call the liborte function */
- d = (jint) ORTEDomainAppCreate((int)jdomain,
+ #ifdef TEST_STAGE
+ printf(":c: ORTEDomainAppCreate() called.. \n");
+ #endif
+ //assign domain events only if not null
+ if(obj_de != NULL) {
+ // memory alocation
+ domain_events_cont = (JORTEDomainEventsContext_t *) malloc(sizeof(JORTEDomainEventsContext_t));
+ // get jvm
+ jint b = (*env)->GetJavaVM(env,&jvm);
+ if (b < 0)
+ {
+ printf(":!c: getJavaVM() failed! \n");
+ return 0;
+ }
+ // create global references
+ domain_events_cont->jvm = jvm;
+ // domain events
+ domain_events_cont->obj_de = (*env)->NewGlobalRef(env, obj_de);
+ // get new events
+ dom_events = (ORTEDomainAppEvents *) eventsHandle;
+ ////////////////////////////////////////////////
+ // set new events & their prarameters
+ // onRegFail
+ dom_events->onRegFail = (ORTEOnRegFail) onRegFail;
+ dom_events->onRegFailParam = (void *) domain_events_cont;
+ // onMgrNew
+ dom_events->onMgrNew = (ORTEOnMgrNew) onMgrNew;
+ dom_events->onMgrNewParam = (void *) domain_events_cont;
+ // onMgrDelete
+ dom_events->onMgrDelete = (ORTEOnMgrDelete) onMgrDelete;
+ dom_events->onMgrDeleteParam = (void *) domain_events_cont;
+ // onAppRemoteNew
+ dom_events->onAppRemoteNew = (ORTEOnAppRemoteNew) onAppRemoteNew;
+ dom_events->onAppRemoteNewParam = (void *) domain_events_cont;
+ // onAppDelete
+ dom_events->onAppDelete = (ORTEOnAppDelete) onAppDelete;
+ dom_events->onAppDeleteParam = (void *) domain_events_cont;
+ // onPubRemoteNew
+ dom_events->onPubRemoteNew = (ORTEOnPubRemote) onPubRemoteNew;
+ dom_events->onPubRemoteNewParam = (void *) domain_events_cont;
+ // onPubRemoteChanged
+ dom_events->onPubRemoteChanged = (ORTEOnPubRemote) onPubRemoteChanged;
+ dom_events->onPubRemoteChangedParam = (void *) domain_events_cont;
+ // onPubDelete
+ dom_events->onPubDelete = (ORTEOnPubDelete) onPubDelete;
+ dom_events->onPubDeleteParam = (void *) domain_events_cont;
+ // onSubRemoteNew
+ dom_events->onSubRemoteNew = (ORTEOnSubRemote) onSubRemoteNew;
+ dom_events->onSubRemoteNewParam = (void *) domain_events_cont;
+ // onSubRemoteChanged
+ dom_events->onSubRemoteChanged = (ORTEOnSubRemote) onSubRemoteChanged;
+ dom_events->onSubRemoteChangedParam = (void *) domain_events_cont;
+ // onSubDelete
+ dom_events->onSubDelete = (ORTEOnSubDelete) onSubDelete;
+ dom_events->onSubDeleteParam = (void *) domain_events_cont;
+ ////////////////////////////////////////////////
+ cls = (*env)->GetObjectClass(env, obj);
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL \n");
+ #endif
+ return 0;
+ }
+ // fieldID - domainEventsContextHandle
+ fid = (*env)->GetFieldID(env,
+ cls,
+ "domainEventsContextHandle",
+ "J");
+ if(fid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: fid = NULL \n");
+ #endif
+ return 0;
+ }
+ (*env)->SetLongField(env,
+ obj,
+ fid,
+ (jlong) domain_events_cont);
+ }
+ // call ORTE function
+ d = (jlong) ORTEDomainAppCreate((int)jdomain,
(ORTEDomainProp *) propHandle,
(ORTEDomainAppEvents *) eventsHandle,
(Boolean) jsusp);
if(!d) {
- printf(":!c: ORTEDomainAppCreate() FAILED.. \n");
+ printf(":!c: creating app domain failed! [NULL handle] \n");
return 0;
}
- printf(":c: ORTEDomainAppCreate() ok.. + %d \n", d);
+ #ifdef TEST_STAGE
+ printf(":c: ORTEDomainAppCreate() ok.. + %#"PRIxPTR"\n", (intptr_t)d);
+ #endif
return (d);
}