jmethodID mid = 0;
jmethodID mid_callback = 0;
//
- JORTECallbackContext_t *callback_cont = (JORTECallbackContext_t*)recvCallBackParam;
+ // if the subscriber has been destroyed, return
+ if((*(JORTECallbackContext_t**)recvCallBackParam) == 0)
+ return;
+
+ JORTECallbackContext_t *callback_cont = *((JORTECallbackContext_t**)recvCallBackParam);
#ifdef TEST_STAGE
printf("\n\n:c: --------------- recvCallBack called.. --------------- \n");
}
jvm = callback_cont->jvm;
// get env
- (*jvm)->AttachCurrentThread(jvm, (void **)&env, NULL);
+ (*jvm)->AttachCurrentThread(jvm,
+ #ifdef __ANDROID__
+ &env,
+ #else
+ (void **)&env,
+ #endif
+ NULL);
if(env == 0)
{
#ifdef TEST_STAGE
jstring jtopic, // subs topic
jstring jtname, // subs typeName
jobject jinstance, // direct ByteBuffer
+ jint jbyteOrder,// byte order of ByteBuffer
jobject obj_msg, // messageData instance
jobject jdeadline,
jobject jminSeparation,
SubscriptionType stype;
NtpTime deadline;
NtpTime minSeparation;
- // jorte varialbe
+ // jorte variable
JORTECallbackContext_t *callback_cont;
+ JORTECallbackContext_t **callback_cont_ptr;
+
// standart variables
const char *topic = 0;
const char *typename = 0;
// memory alocation
// don't forget use free() funct.!!
callback_cont = (JORTECallbackContext_t*)malloc(sizeof(JORTECallbackContext_t));
+ callback_cont_ptr = (JORTECallbackContext_t**)malloc(sizeof(JORTECallbackContext_t*));
+ *callback_cont_ptr = callback_cont;
do
{
#endif
}
callback_cont->jvm = jvm;
- callback_cont->cur_endian = FLAG_ENDIANNESS;
+ callback_cont->cur_endian = (CDR_Endianness) jbyteOrder;
// create global references
callback_cont->obj = (*env)->NewGlobalRef(env, obj_callback);
//
(*env)->SetLongField(env,
obj,
fid,
- (jlong) callback_cont);
+ (jlong) callback_cont_ptr);
#ifdef TEST_STAGE
printf(":c: ORTESubscriptionCreate() calling..\n");
#endif
&deadline,
&minSeparation,
recvCallBack,
- (void*)callback_cont,
+ (void*)callback_cont_ptr,
(uint32_t) j_multicastIP);
if (s == 0)
{