//#define TEST_STAGE
-#include "onLoad.h"
#ifdef __ANDROID__
#include <android/log.h>
extern NtpTime
getNtpTime(JNIEnv *env, jobject obj);
+
+extern Boolean
+onSubDelete(const struct ORTEAppInfo *appInfo,const struct ORTESubInfo *subInfo,void *param);
+
+extern Boolean
+onSubRemoteChanged(const struct ORTEAppInfo *appInfo,const struct ORTESubInfo *subInfo,void *param);
+
+extern Boolean
+onSubRemoteNew(const struct ORTEAppInfo *appInfo,const struct ORTESubInfo *subInfo,void *param);
+
+extern Boolean
+onPubDelete(const struct ORTEAppInfo *appInfo,const struct ORTEPubInfo *pubInfo,void *param);
+
+extern Boolean
+onPubRemoteChanged(const struct ORTEAppInfo *appInfo,const struct ORTEPubInfo *pubInfo,void *param);
+
+extern Boolean
+onPubRemoteNew(const struct ORTEAppInfo *appInfo,const struct ORTEPubInfo *pubInfo,void *param);
+
+extern Boolean
+onAppDelete(const struct ORTEAppInfo *appInfo,void *param);
+
+extern Boolean
+onAppRemoteNew(const struct ORTEAppInfo *appInfo,void *param);
+
+extern Boolean
+onMgrDelete(const struct ORTEAppInfo *appInfo,void *param);
+
+extern Boolean
+onMgrNew(const struct ORTEAppInfo *appInfo,void *param);
+
+extern Boolean
+onRegFail(void *param);
+
+extern jclass
+findClass(JNIEnv *env, const char* name);
+++ /dev/null
-#include <jni.h>
-
-#ifndef IncludedOnLoad
-#define IncludedOnLoad
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-jclass findClass(JNIEnv *env, const char* name);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
* Signature: (IZ)J
*/
JNIEXPORT jlong JNICALL Java_org_ocera_orte_DomainApp_jORTEDomainDefaultAppCreate
- (JNIEnv *, jclass, jint, jboolean);
+ (JNIEnv *, jobject, jint, jboolean);
/*
* Class: org_ocera_orte_DomainApp
* Signature: (IJJLorg/ocera/orte/types/DomainEvents;Z)J
*/
JNIEXPORT jlong JNICALL Java_org_ocera_orte_DomainApp_jORTEDomainAppCreate
- (JNIEnv *, jclass, jint, jlong, jlong, jobject, jboolean);
+ (JNIEnv *, jobject, jint, jlong, jlong, jobject, jboolean);
/*
* Class: org_ocera_orte_DomainApp
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_org_ocera_orte_DomainApp_jORTEDomainAppDestroy
- (JNIEnv *, jclass, jlong);
+ (JNIEnv *, jobject, jlong);
/*
* Class: org_ocera_orte_DomainApp
* Signature: (JLjava/lang/String;J)I
*/
JNIEXPORT jint JNICALL Java_org_ocera_orte_DomainApp_jORTETypeRegisterAdd
- (JNIEnv *, jclass, jlong, jstring, jlong);
+ (JNIEnv *, jobject, jlong, jstring, jlong);
/*
* Class: org_ocera_orte_DomainApp
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_org_ocera_orte_DomainApp_jORTETypeRegisterDestroyAll
- (JNIEnv *, jclass, jlong);
+ (JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
* Signature: (IZ)J
*/
JNIEXPORT jlong JNICALL Java_org_ocera_orte_DomainMgr_jORTEDomainDefaultMgrCreate
- (JNIEnv *, jclass, jint, jboolean);
+ (JNIEnv *, jobject, jint, jboolean);
/*
* Class: org_ocera_orte_DomainMgr
* Signature: (IJJZ)J
*/
JNIEXPORT jlong JNICALL Java_org_ocera_orte_DomainMgr_jORTEDomainMgrCreate
- (JNIEnv *, jclass, jint, jlong, jlong, jboolean);
+ (JNIEnv *, jobject, jint, jlong, jlong, jobject obj_de, jboolean);
/*
* Class: org_ocera_orte_DomainMgr
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_org_ocera_orte_DomainMgr_jORTEDomainMgrDestroy
- (JNIEnv *, jclass, jlong);
+ (JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
import org.ocera.orte.types.*;
-public class Domain {
+public abstract class Domain {
/** load native library 'libjorte.so' */
static {
}
/* domain fields */
- protected long handle;
- public DomainProp props;
- public DomainEvents events;
+ protected long handle;
+ protected long domainEventsContextHandle = 0;
+ protected DomainProp props;
+ protected DomainEvents events;
/* constructor */
/**
- * Get handle of the Application Domain.
- * @return Handle of the Application Domain.
+ * Get handle of the Domain.
+ * @return Handle of the Domain.
*/
public long getHandle()
{
}
/**
- * Get handle of the Application Domain.
- * @return Handle of the Application Domain.
+ * Destroy domain.
+ * @return Handle of the Domain.
*/
- public boolean destroy()
- {
- return false;
- }
+ public abstract boolean destroy();
}
/** TODO dodelat objekty 'props', 'events' */
public DomainApp(int domain, DomainProp ps, DomainEvents ev, boolean suspend)
{
- super(); // set Default Domain Properties
- if(ps == null) {
- this.props = DomainProp.defaultPropsCreate();
- }
- else {
- this.props = ps;
- }
- // init Domain Events
- if(ev == null) {
- this.events.init();
- }
- else {
- this.events = ev;
- }
- this.handle = jORTEDomainAppCreate(domain,ps.handle,ev.getHandle(),ev,suspend);
+ super();
+ this.props = ps;
+ this.events = ev;
+ this.handle = jORTEDomainAppCreate(domain,
+ ps==null ? 0 : this.props.getHandle(),
+ ev==null ? 0 : this.events.getHandle(),
+ this.events,
+ suspend);
/* TODO osetrit neuspesne vytvoreni domeny */
if(this.handle == 0) System.out.println(":j!: zero domain handle! ..");
else System.out.println(":j: application domain created..");
/**
* Destroy the Application Domain.
*/
+ @Override
public boolean destroy()
{
- if(!destroyAllRegTypes()) System.out.println(":j!: destroyAllRegTypes fault!");
- if(!jORTEDomainAppDestroy(this.handle) || !this.props.destroy()) {
- System.out.println(":j!: ORTEDomainADestroy fault!");
- return false;
- }
- return true;
-
+ if(destroyAllRegTypes() && jORTEDomainAppDestroy(this.handle) && (this.props == null || this.props.destroy())) return true;
+ System.out.println(":j!: ORTEDomainAppDestroy() fault..");
+ return false;
}
* @param domain given domain
* @return addres value (from C environment) of the created domain
*/
- private static native long jORTEDomainDefaultAppCreate(int domain,boolean suspend);
+ private native long jORTEDomainDefaultAppCreate(int domain,boolean suspend);
/**
* @return addres value (from C environment) of the created domain
*/
- private static native
+ private native
long jORTEDomainAppCreate(int domain,
long propHandle,
long eventsHandle,
* @param jp_domhandle handler to domain
* @return boolean value, False when some error occures, otherwise True
*/
- private static native
+ private native
boolean jORTEDomainAppDestroy(long dhandle);
* @param
* @return
*/
- private static native
+ private native
int jORTETypeRegisterAdd(long dhandle,
String typeName,
long maxlenght);
* @param dhandle handler to domain
* @return boolean value, False when some error occures, otherwise True
*/
- private static native
+ private native
boolean jORTETypeRegisterDestroyAll(long dhandle);
-}
\ No newline at end of file
+}
DomainEvents events,
boolean suspend)
{
- super(); // set Default Domain Properties
- if(props == null) {
- this.props = DomainProp.defaultPropsCreate();
- }
- else {
- this.props = props;
- }
-
- handle = jORTEDomainMgrCreate(domain,
- props.handle,
- events==null ? 0 : events.getHandle(),
- suspend);
+ super();
+ this.props = props;
+ this.events = events;
+ this.handle = jORTEDomainMgrCreate(domain,
+ props==null ? 0 : this.props.getHandle(),
+ events==null ? 0 : this.events.getHandle(),
+ this.events,
+ suspend);
}
-
- /*
- public void create()
- {}
- */
/**
* destroy - destroy manager object
* @return boolean: False if bad publication handle, True if succesful
*/
+ @Override
public
boolean destroy()
{
- if(jORTEDomainMgrDestroy(this.handle) && this.props.destroy()) return true;
+ if(jORTEDomainMgrDestroy(this.handle) && (this.props == null || this.props.destroy())) return true;
System.out.println(":j!: ORTEDomainMgrDestroy() fault..");
return false;
}
* @param handle of the domain
* @return handle of the Manager
**/
- private static native
+ private native
long jORTEDomainDefaultMgrCreate(int dhandle,boolean suspend);
* @param handle of the domain events
* @return handle of the Manager
**/
- private static native
+ private native
long jORTEDomainMgrCreate(int dhandle,
long propsHandle,
long eventsHandle,
+ DomainEvents ev,
boolean suspend);
/**
* @param hadle of the domain
* @return if some error occures return False, otherwise True
**/
- private static native
+ private native
boolean jORTEDomainMgrDestroy(long dhandle);
}
package org.ocera.orte;
-import org.ocera.orte.types.*;;
+import org.ocera.orte.types.*;
public class Manager {
private DomainMgr dmgr;
+ private ManagerEvents events = new ManagerEvents();
+
+ public Manager() {
+ dmgr = new DomainMgr(ORTEConstant.ORTE_DEFAULT_DOMAIN,
+ null,
+ events,
+ false);
+ }
public Manager(String[] mgrs) {
DomainProp dprops = DomainProp.defaultPropsCreate();
dmgr = new DomainMgr(ORTEConstant.ORTE_DEFAULT_DOMAIN,
dprops,
- null,
+ events,
false);
}
--- /dev/null
+import org.ocera.orte.*;
+import org.ocera.orte.types.*;
+
+public class MyManager {
+
+ static {
+ System.loadLibrary("jorte");
+ }
+
+ public static void main(String[] args) {
+ Manager manager = new Manager();
+
+ while(true) {
+ try {
+ Thread.sleep(1000);
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
/* handler to C struct with default domain properties */
- public long handle = 0;
+ private long handle = 0;
private String mgrs = null;
+
+ public long getHandle() {
+ return this.handle;
+ }
/**
* setProps - sets DomainProp
--- /dev/null
+package org.ocera.orte.types;
+
+public class ManagerEvents extends DomainEvents {
+
+ public ManagerEvents()
+ {
+ super();
+ }
+
+ public void onRegFail() {}
+
+ public void onMgrNew(AppInfo appInfo)
+ {
+ System.out.println(":j: *************************************************");
+ System.out.println(":j: * call method 'MyEvents.onMgrNew()'.. *");
+ System.out.println(":j: *************************************************");
+ appInfo.printWithLegend();
+ }
+
+ public void onMgrDelete(AppInfo appInfo)
+ {
+ System.out.println(":j: *************************************************");
+ System.out.println(":j: * call method 'MyEvents.onMgrDelete()'.. *");
+ System.out.println(":j: *************************************************");
+ appInfo.printWithLegend();
+ }
+
+ public void onAppRemoteNew(AppInfo appInfo)
+ {
+ System.out.println(":j: *************************************************");
+ System.out.println(":j: * call method 'MyEvents.onAppRemoteNew()'.. *");
+ System.out.println(":j: *************************************************");
+ appInfo.printWithLegend();
+ }
+
+ public void onAppDelete(AppInfo appInfo)
+ {
+ System.out.println(":j: *************************************************");
+ System.out.println(":j: * call method 'MyEvents.onAppDelete()'.. *");
+ System.out.println(":j: *************************************************");
+ appInfo.printWithLegend();
+ }
+
+ public void onPubRemoteNew(AppInfo appInfo, PubInfo pubInfo) {}
+
+ public void onPubRemoteChanged(AppInfo appInfo, PubInfo pubInfo) {}
+
+ public void onPubDelete(AppInfo appInfo, PubInfo pubInfo) {}
+
+ public void onSubRemoteNew(AppInfo appInfo, SubInfo subInfo) {}
+
+ public void onSubRemoteChanged(AppInfo appInfo, SubInfo subInfo) {}
+
+ public void onSubDelete(AppInfo appInfo, SubInfo subInfo) {}
+
+}
+
#include "jorte/jorte_protos_api.h"
#include <inttypes.h>
-// /////////////////////////////////////////////////////////////////////
-// public void onRegFail()
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onRegFail(void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onRegFail()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onRegFail",
- "()V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-// Event - public void onMgrNew()
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onMgrNew(const struct ORTEAppInfo *appInfo, void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onMgrNew()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onMgrNew",
- "(Lorg/ocera/orte/types/AppInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-// Event - public void onMgrDelete()
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onMgrDelete(const struct ORTEAppInfo *appInfo, void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onMgrDelete()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onMgrDelete",
- "(Lorg/ocera/orte/types/AppInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-
-// /////////////////////////////////////////////////////////////////////
-// Event - onAppRemoteNew
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onAppRemoteNew(const struct ORTEAppInfo *appInfo, void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onAppRemoteNew()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
-
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onAppRemoteNew",
- "(Lorg/ocera/orte/types/AppInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-// public void onAppDelete() { }
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onAppDelete(const struct ORTEAppInfo *appInfo, void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onAppDelete()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onAppDelete",
- "(Lorg/ocera/orte/types/AppInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-// public void onPubRemoteNew()
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onPubRemoteNew(const struct ORTEAppInfo *appInfo,
- const struct ORTEPubInfo *pubInfo,
- void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jobject obj_pinfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onPubRemoteNew()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
- // create PubInfo instance
- obj_pinfo = createPubInfo(env, pubInfo);
- if(obj_pinfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_pinfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onPubRemoteNew",
- "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/PubInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo,
- obj_pinfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-//public void onPubRemoteChanged()
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onPubRemoteChanged(const struct ORTEAppInfo *appInfo,
- const struct ORTEPubInfo *pubInfo,
- void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jobject obj_pinfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onPubRemoteChanged()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
- // create PubInfo instance
- obj_pinfo = createPubInfo(env, pubInfo);
- if(obj_pinfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_pinfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onPubRemoteChanged",
- "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/PubInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo,
- obj_pinfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-
-
-// /////////////////////////////////////////////////////////////////////
-// public void onPubDelete()
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onPubDelete(const struct ORTEAppInfo *appInfo,
- const struct ORTEPubInfo *pubInfo,
- void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jobject obj_pinfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onPubDelete()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
- // create PubInfo instance
- obj_pinfo = createPubInfo(env, pubInfo);
- if(obj_pinfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_pinfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onPubDelete",
- "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/PubInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo,
- obj_pinfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-// Event - onSubRemoteNew
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onSubRemoteNew(const struct ORTEAppInfo *appInfo,
- const struct ORTESubInfo *subInfo,
- void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jobject obj_ainfo;
- jobject obj_sinfo;
- jclass cls;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onSubRemoteNew()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
- // create SubInfo instance
- obj_sinfo = createSubInfo(env, subInfo);
- if(obj_sinfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_sinfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onSubRemoteNew",
- "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/SubInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo,
- obj_sinfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-// public void onSubRemoteChanged() { }
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onSubRemoteChanged(const struct ORTEAppInfo *appInfo,
- const struct ORTESubInfo *subInfo,
- void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jobject obj_sinfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onSubRemoteChanged()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
- // create SubInfo instance
- obj_sinfo = createSubInfo(env, subInfo);
- if(obj_sinfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_sinfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onSubRemoteChanged",
- "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/SubInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo,
- obj_sinfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
-
-// /////////////////////////////////////////////////////////////////////
-// public void onSubDelete() { }
-// /////////////////////////////////////////////////////////////////////
-Boolean
-onSubDelete(const struct ORTEAppInfo *appInfo,
- const struct ORTESubInfo *subInfo,
- void *param)
-{
-// ///////////////////////////////// SPOLECNA CAST //
- JavaVM *jvm = NULL;
- JNIEnv *env = NULL; // local reference
- jclass cls;
- jobject obj_ainfo;
- jobject obj_sinfo;
- jmethodID mid;
- //
- JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
- int flag_ok = 0;
-
- #ifdef TEST_STAGE
- printf(":c: event func. 'onSubDelete()' called.. \n");
- #endif
-
- do
- {
-// ///////////////////////////////// SPOLECNA CAST //
- if(domain_events_cont->jvm == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: jvm = NULL! \n");
- #endif
- break;
- }
- jvm = domain_events_cont->jvm;
- // get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
- if(env == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: env = NULL! \n");
- #endif
- break;
- }
- // find class
- cls = findClass(env, "org.ocera.orte.types.DomainEvents");
- if(cls == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: cls = NULL! \n");
- #endif
- break;
- }
- // create AppInfo instance
- obj_ainfo = createAppInfo(env, appInfo);
- if(obj_ainfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_ainfo = NULL! \n");
- #endif
- break;
- }
- // create SubInfo instance
- obj_sinfo = createSubInfo(env, subInfo);
- if(obj_sinfo == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: obj_sinfo = NULL! \n");
- #endif
- break;
- }
-// ///////////////////////////////// SPOLECNA CAST //
- // get method ID
- mid = (*env)->GetMethodID(env,
- cls,
- "onSubDelete",
- "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/SubInfo;)V");
- if(mid == 0)
- {
- #ifdef TEST_STAGE
- printf(":!c: mid = NULL! \n");
- #endif
- break;
- }
- // call method
- (*env)->CallVoidMethod(env,
- domain_events_cont->obj_de,
- mid,
- obj_ainfo,
- obj_sinfo);
- flag_ok = 1;
- } while(0);
- // while broken
- if(flag_ok)
- {
- if((*jvm)->DetachCurrentThread(jvm) != 0)
- {
- printf(":c!: DetachCurrentThread fault! \n");
- return ORTE_FALSE;
- }
- }
-
- return ORTE_TRUE;
-}
-
// /////////////////////////////////////////////////////////////////////
// create default application domain
// /////////////////////////////////////////////////////////////////////
JNIEXPORT jlong JNICALL
Java_org_ocera_orte_DomainApp_jORTEDomainDefaultAppCreate
-(JNIEnv *env, jclass class, jint jdomain, jboolean jsusp)
+(JNIEnv *env, jobject obj, jint jdomain, jboolean jsusp)
{
jlong d;
// //////////////////////////////////////////////////////////////////////
JNIEXPORT jlong JNICALL
Java_org_ocera_orte_DomainApp_jORTEDomainAppCreate
-(JNIEnv *env, jclass cls,
+(JNIEnv *env, jobject obj,
jint jdomain,
jlong propHandle,
jlong eventsHandle,
{
// jni varibles
JavaVM *jvm;
+ jclass cls;
+ jfieldID fid;
jlong d;
//
ORTEDomainAppEvents *dom_events;
#ifdef TEST_STAGE
printf(":c: ORTEDomainAppCreate() called.. \n");
#endif
- // memory alocation
- // don't forget free memory - free()!!
- 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;
+ //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);
}
- // 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;
- ////////////////////////////////////////////////
// call ORTE function
d = (jlong) ORTEDomainAppCreate((int)jdomain,
(ORTEDomainProp *) propHandle,
*
*/
+#include <stdlib.h>
// origin orte headers
#include "orte.h"
// pregenerated header
#include "jorte/org_ocera_orte_DomainApp.h"
#include "jorte/4all.h"
+#include "jorte/jorte_typedefs_defines.h"
JNIEXPORT jboolean JNICALL
Java_org_ocera_orte_DomainApp_jORTEDomainAppDestroy
-(JNIEnv *env, jclass cls, jlong dhandle)
+(JNIEnv *env, jobject obj, jlong dhandle)
{
- // check domain handle
- if (dhandle == 0)
+ jlong h;
+ jclass cls;
+ jfieldID fid;
+ int flag_ok = 0;
+
+ do {
+ // check domain handle
+ if (dhandle == 0)
+ {
+ printf(":!c: ORTEDomainAppDestroy failed! [bad handle] \n");
+ break;
+ }
+ // call ORTE function
+ if (!ORTEDomainAppDestroy((ORTEDomain *) dhandle))
+ {
+ #ifdef TEST_STAGE
+ printf(":c: ORTEDomainAppDestroy failed.. \n");
+ #endif
+ break;
+ }
+
+ // free domainEvents object
+ // find cls
+ cls = (*env)->GetObjectClass(env, obj);
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // fieldID
+ fid = (*env)->GetFieldID(env,
+ cls,
+ "domainEventsContextHandle",
+ "J");
+ if(fid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: fid = NULL! \n");
+ #endif
+ break;
+ }
+ // get value
+ h = (*env)->GetLongField(env, obj, fid);
+ if(h)
+ {
+ JORTEDomainEventsContext_t *ctx = (JORTEDomainEventsContext_t*)h;
+ if(ctx->obj_de)
+ {
+ #ifdef TEST_STAGE
+ printf(":c: deleting ctx->obj_de \n");
+ #endif
+ (*env)->DeleteGlobalRef(env, ctx->obj_de);
+ }
+ //
+ free((void*)h);
+ }
+ flag_ok = 1;
+ } while(0);
+
+ if(flag_ok == 0)
{
- printf(":!c: ORTEDomainAppDestroy failed! [bad handle] \n");
+ printf(":!c: ORTEDomainAppDestroy failed! \n");
return 0;
}
- // call ORTE function
- if (ORTEDomainAppDestroy((ORTEDomain *) dhandle))
- {
- #ifdef TEST_STAGE
- printf(":c: ORTEDomainAppDestroy successfull.. \n");
- #endif
- return 1;
- }
- printf(":!c: ORTEDomainAppDestroy failed! \n");
- return 0;
+
+ return 1;
}
--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+#include <jni.h>
+#include "orte.h"
+#include "jorte/4all.h"
+#include "jorte/jorte_typedefs_defines.h"
+#include "jorte/jorte_protos_api.h"
+
+// /////////////////////////////////////////////////////////////////////
+// public void onRegFail()
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onRegFail(void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onRegFail()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onRegFail",
+ "()V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+// Event - public void onMgrNew()
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onMgrNew(const struct ORTEAppInfo *appInfo, void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onMgrNew()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onMgrNew",
+ "(Lorg/ocera/orte/types/AppInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+// Event - public void onMgrDelete()
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onMgrDelete(const struct ORTEAppInfo *appInfo, void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onMgrDelete()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onMgrDelete",
+ "(Lorg/ocera/orte/types/AppInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+
+// /////////////////////////////////////////////////////////////////////
+// Event - onAppRemoteNew
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onAppRemoteNew(const struct ORTEAppInfo *appInfo, void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onAppRemoteNew()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onAppRemoteNew",
+ "(Lorg/ocera/orte/types/AppInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+// public void onAppDelete() { }
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onAppDelete(const struct ORTEAppInfo *appInfo, void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onAppDelete()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onAppDelete",
+ "(Lorg/ocera/orte/types/AppInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+// public void onPubRemoteNew()
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onPubRemoteNew(const struct ORTEAppInfo *appInfo,
+ const struct ORTEPubInfo *pubInfo,
+ void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jobject obj_pinfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onPubRemoteNew()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+ // create PubInfo instance
+ obj_pinfo = createPubInfo(env, pubInfo);
+ if(obj_pinfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_pinfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onPubRemoteNew",
+ "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/PubInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo,
+ obj_pinfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+//public void onPubRemoteChanged()
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onPubRemoteChanged(const struct ORTEAppInfo *appInfo,
+ const struct ORTEPubInfo *pubInfo,
+ void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jobject obj_pinfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onPubRemoteChanged()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+ // create PubInfo instance
+ obj_pinfo = createPubInfo(env, pubInfo);
+ if(obj_pinfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_pinfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onPubRemoteChanged",
+ "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/PubInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo,
+ obj_pinfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+
+
+// /////////////////////////////////////////////////////////////////////
+// public void onPubDelete()
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onPubDelete(const struct ORTEAppInfo *appInfo,
+ const struct ORTEPubInfo *pubInfo,
+ void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jobject obj_pinfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onPubDelete()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+ // create PubInfo instance
+ obj_pinfo = createPubInfo(env, pubInfo);
+ if(obj_pinfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_pinfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onPubDelete",
+ "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/PubInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo,
+ obj_pinfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+// Event - onSubRemoteNew
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onSubRemoteNew(const struct ORTEAppInfo *appInfo,
+ const struct ORTESubInfo *subInfo,
+ void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jobject obj_ainfo;
+ jobject obj_sinfo;
+ jclass cls;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onSubRemoteNew()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+ // create SubInfo instance
+ obj_sinfo = createSubInfo(env, subInfo);
+ if(obj_sinfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_sinfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onSubRemoteNew",
+ "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/SubInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo,
+ obj_sinfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+// public void onSubRemoteChanged() { }
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onSubRemoteChanged(const struct ORTEAppInfo *appInfo,
+ const struct ORTESubInfo *subInfo,
+ void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jobject obj_sinfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onSubRemoteChanged()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+ // create SubInfo instance
+ obj_sinfo = createSubInfo(env, subInfo);
+ if(obj_sinfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_sinfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onSubRemoteChanged",
+ "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/SubInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo,
+ obj_sinfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
+
+
+// /////////////////////////////////////////////////////////////////////
+// public void onSubDelete() { }
+// /////////////////////////////////////////////////////////////////////
+Boolean
+onSubDelete(const struct ORTEAppInfo *appInfo,
+ const struct ORTESubInfo *subInfo,
+ void *param)
+{
+// ///////////////////////////////// SPOLECNA CAST //
+ JavaVM *jvm = NULL;
+ JNIEnv *env = NULL; // local reference
+ jclass cls;
+ jobject obj_ainfo;
+ jobject obj_sinfo;
+ jmethodID mid;
+ //
+ JORTEDomainEventsContext_t *domain_events_cont = (JORTEDomainEventsContext_t*) param;
+ int flag_ok = 0;
+
+ #ifdef TEST_STAGE
+ printf(":c: event func. 'onSubDelete()' called.. \n");
+ #endif
+
+ do
+ {
+// ///////////////////////////////// SPOLECNA CAST //
+ if(domain_events_cont->jvm == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: jvm = NULL! \n");
+ #endif
+ break;
+ }
+ jvm = domain_events_cont->jvm;
+ // get env
+ (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ if(env == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: env = NULL! \n");
+ #endif
+ break;
+ }
+ // find class
+ cls = findClass(env, "org.ocera.orte.types.DomainEvents");
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // create AppInfo instance
+ obj_ainfo = createAppInfo(env, appInfo);
+ if(obj_ainfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_ainfo = NULL! \n");
+ #endif
+ break;
+ }
+ // create SubInfo instance
+ obj_sinfo = createSubInfo(env, subInfo);
+ if(obj_sinfo == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: obj_sinfo = NULL! \n");
+ #endif
+ break;
+ }
+// ///////////////////////////////// SPOLECNA CAST //
+ // get method ID
+ mid = (*env)->GetMethodID(env,
+ cls,
+ "onSubDelete",
+ "(Lorg/ocera/orte/types/AppInfo;Lorg/ocera/orte/types/SubInfo;)V");
+ if(mid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: mid = NULL! \n");
+ #endif
+ break;
+ }
+ // call method
+ (*env)->CallVoidMethod(env,
+ domain_events_cont->obj_de,
+ mid,
+ obj_ainfo,
+ obj_sinfo);
+ flag_ok = 1;
+ } while(0);
+ // while broken
+ if(flag_ok)
+ {
+ if((*jvm)->DetachCurrentThread(jvm) != 0)
+ {
+ printf(":c!: DetachCurrentThread fault! \n");
+ return ORTE_FALSE;
+ }
+ }
+
+ return ORTE_TRUE;
+}
\ No newline at end of file
*
*/
-
+#include <stdlib.h>
// origin orte headers
#include "orte.h"
// pregenerated header
#include "jorte/org_ocera_orte_DomainMgr.h"
#include "jorte/4all.h"
+#include "jorte/jorte_typedefs_defines.h"
+#include "jorte/jorte_protos_api.h"
/* ****************************** *
* create default manager domain *
* ****************************** */
JNIEXPORT jlong JNICALL
Java_org_ocera_orte_DomainMgr_jORTEDomainDefaultMgrCreate
-(JNIEnv *env, jclass cls, jint jdomain, jboolean susp)
+(JNIEnv *env, jobject obj, jint jdomain, jboolean susp)
{
jlong d;
* *************************** */
JNIEXPORT jlong JNICALL
Java_org_ocera_orte_DomainMgr_jORTEDomainMgrCreate
-(JNIEnv *env, jclass cls, jint jdomain, jlong propHandle,
- jlong eventsHandle, jboolean susp)
+(JNIEnv *env, jobject obj,
+ jint jdomain,
+ jlong propHandle,
+ jlong eventsHandle,
+ jobject obj_de,
+ jboolean susp)
{
+ JavaVM *jvm;
+ jclass cls;
+ jfieldID fid;
jlong d;
-
+ //
+ ORTEDomainAppEvents *dom_events;
+ JORTEDomainEventsContext_t *domain_events_cont;
+ //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) ORTEDomainMgrCreate((int)jdomain,
(ORTEDomainProp *) propHandle,
*
*/
-
+#include <stdlib.h>
// origin orte headers
#include "orte.h"
// pregenerated header
#include "jorte/org_ocera_orte_DomainMgr.h"
#include "jorte/4all.h"
+#include "jorte/jorte_typedefs_defines.h"
JNIEXPORT jboolean JNICALL
Java_org_ocera_orte_DomainMgr_jORTEDomainMgrDestroy
-(JNIEnv *env, jclass cls, jlong dhandle)
+(JNIEnv *env, jobject obj, jlong dhandle)
{
- int8_t b;
+ jlong h;
+ jclass cls;
+ jfieldID fid;
+ int flag_ok = 0;
+
+ do {
+ // check domain handle
+ if (dhandle == 0)
+ {
+ printf(":!c: ORTEDomainAppDestroy failed! [bad handle] \n");
+ break;
+ }
+ // call ORTE function
+ if(!ORTEDomainMgrDestroy((ORTEDomain *) dhandle))
+ {
+ #ifdef TEST_STAGE
+ printf(":c: mgrDomain destroy failed.. \n");
+ #endif
+ break;
+ }
+ // free domainEvents object
+ // find cls
+ cls = (*env)->GetObjectClass(env, obj);
+ if(cls == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // fieldID
+ fid = (*env)->GetFieldID(env,
+ cls,
+ "domainEventsContextHandle",
+ "J");
+ if(fid == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: fid = NULL! \n");
+ #endif
+ break;
+ }
+ // get value
+ h = (*env)->GetLongField(env, obj, fid);
+ if(h)
+ {
+ JORTEDomainEventsContext_t *ctx = (JORTEDomainEventsContext_t*)h;
+ if(ctx->obj_de)
+ {
+ #ifdef TEST_STAGE
+ printf(":c: deleting ctx->obj_de \n");
+ #endif
+ (*env)->DeleteGlobalRef(env, ctx->obj_de);
+ }
+ //
+ free((void*)h);
+ }
+ flag_ok = 1;
+ } while(0);
- // call ORTE function
- b = ORTEDomainMgrDestroy((ORTEDomain *) dhandle);
- if(b == ORTE_TRUE)
+ if(flag_ok == 0)
{
- #ifdef TEST_STAGE
- printf(":c: mgrDomain destroy successfully.. \n");
- #endif
- return 1;
+ printf(":!c: ORTEDomainMgrDestroy failed! \n");
+ return 0;
}
- else
- printf(":!c: mgrDomain destroy failed! [bad domain handle] \n");
- return 0;
+
+ return 1;
}
#include "jorte/4all.h"
// pregenerated header
#include "jorte/org_ocera_orte_Publication.h"
+#include "jorte/jorte_protos_api.h"
JNIEXPORT jobject JNICALL
do
{
+ if(subs_handle)
+ {
+ // call ORTE function
+ b = ORTESubscriptionDestroy((ORTESubscription *) subs_handle);
+ if (b == ORTE_BAD_HANDLE)
+ {
+ printf(":!c: subscription destroy failed! [bad sub handle] \n");
+ break;
+ }
+ #ifdef TEST_STAGE
+ printf(":c: subscription destroy succesfuly.. \n");
+ #endif
+ }
+
// free callBack object
// find cls
cls = (*env)->GetObjectClass(env, obj);
#endif
break;
}
- if(subs_handle)
- {
- // call ORTE function
- b = ORTESubscriptionDestroy((ORTESubscription *) subs_handle);
- if (b == ORTE_BAD_HANDLE)
- {
- printf(":!c: subscription destroy failed! [bad sub handle] \n");
- break;
- }
- #ifdef TEST_STAGE
- printf(":c: subscription destroy succesfuly.. \n");
- #endif
- }
// get value
h = (*env)->GetLongField(env, obj, fid);
if(h)
#include "jorte/4all.h"
// pregenerated header
#include "jorte/org_ocera_orte_Subscription.h"
+#include "jorte/jorte_protos_api.h"
JNIEXPORT jobject JNICALL
JNtpTimeToStringUs.c \
JORTEDomainAppCreate.c \
JORTEDomainAppDestroy.c \
+JORTEDomainEvents.c \
JORTEDomainInitEvents.c \
JORTEDomainMgrCreate.c \
JORTEDomainMgrDestroy.c \