*/
static ca_mutex g_mutexObjectList = NULL;
+/**
+ * Mutex to synchronize input stream.
+ */
+static ca_mutex g_mutexInputStream = NULL;
+
typedef struct send_data
{
char* address;
g_mutexObjectList = NULL;
}
+ if (g_mutexInputStream)
+ {
+ ca_mutex_free(g_mutexInputStream);
+ g_mutexInputStream = NULL;
+ }
+
OIC_LOG(DEBUG, TAG, "OUT");
}
return CA_STATUS_FAILED;
}
+ g_mutexInputStream = ca_mutex_new();
+ if (!g_mutexInputStream)
+ {
+ OIC_LOG(ERROR, TAG, "Failed to created g_mutexInputStream.");
+
+ CAEDRServerDestroyMutex();
+ return CA_STATUS_FAILED;
+ }
+
OIC_LOG(DEBUG, TAG, "OUT");
return CA_STATUS_OK;
}
jni_mid_getInputStream);
OIC_LOG(DEBUG, TAG, "[EDR][Native] btReadData: ready inputStream..");
- g_inputStream = (*env)->NewGlobalRef(env, jni_obj_inputStream);
-
jclass jni_cid_InputStream = (*env)->FindClass(env, "java/io/InputStream");
if (!jni_cid_InputStream)
{
return CA_STATUS_FAILED;
}
+ ca_mutex_lock(g_mutexInputStream);
+ if (!g_inputStream)
+ {
+ g_inputStream = (*env)->NewGlobalRef(env, jni_obj_inputStream);
+ }
+
jint length = (*env)->CallIntMethod(env, g_inputStream, jni_mid_read, jbuf, (jint) 0,
MAX_PDU_BUFFER);
+ ca_mutex_unlock(g_mutexInputStream);
OIC_LOG(DEBUG, TAG, "[EDR][Native] read something from InputStream");