g_id Put(const char *url, const ghttp_Header *headers, const void *data, size_t size, gevent_Callback callback, void *udata) { JNIEnv *env = g_getJNIEnv(); jstring jurl = env->NewStringUTF(url); jobjectArray jheaders = toJava(env, headers); jbyteArray jdata = NULL; if (size > 0) { jdata = env->NewByteArray(size); env->SetByteArrayRegion(jdata, 0, size, (jbyte*)data); } g_id id = g_NextId(); env->CallStaticVoidMethod(javaNativeBridge_, putId_, jurl, jheaders, jdata, (jlong)this, (jlong)id); if (jdata) env->DeleteLocalRef(jdata); if (jheaders) env->DeleteLocalRef(jheaders); env->DeleteLocalRef(jurl); CallbackElement element; element.callback = callback; element.udata = udata; map_[id] = element; return id; }
jobject JniVector::toJava(std::vector<std::string> &cppVector) { static jmethodID addMethod = m_env->GetMethodID(m_vectorCls, "add", "(Ljava/lang/Object;)Z"); jobject vectorObject = toJava(); if (!vectorObject) return nullptr; for (size_t index = 0; index < cppVector.size(); index++) { jstring element = m_env->NewStringUTF(cppVector[index].c_str()); m_env->CallBooleanMethod(vectorObject, addMethod, element); m_env->DeleteLocalRef(element); } return vectorObject; }
g_id Get(const char *url, const ghttp_Header *headers, gevent_Callback callback, void *udata) { JNIEnv *env = g_getJNIEnv(); jstring jurl = env->NewStringUTF(url); jobjectArray jheaders = toJava(env, headers); g_id id = g_NextId(); env->CallStaticVoidMethod(javaNativeBridge_, getId_, jurl, jheaders, (jlong)this, (jlong)id); if (jheaders) env->DeleteLocalRef(jheaders); env->DeleteLocalRef(jurl); CallbackElement element; element.callback = callback; element.udata = udata; map_[id] = element; return id; }
java::lang::Object *toJava(const AbstractQoreNode *n, ExceptionSink *xsink) { if (is_nothing(n)) return 0; switch (n->getType()) { case NT_STRING: return toJava(*(reinterpret_cast<const QoreStringNode *>(n)), xsink); case NT_INT: { int64 v = reinterpret_cast<const QoreBigIntNode *>(n)->val; if ((v & 0xff) == v) return toJava((jbyte)v); if ((v & 0xffff) == v) return toJava((jshort)v); if ((v & 0xffffffff) == v) return toJava((jint)v); return toJava((jlong)v); } case NT_BOOLEAN: return toJava((jboolean)reinterpret_cast<const QoreBoolNode *>(n)->getValue()); case NT_FLOAT: return toJava((jdouble)reinterpret_cast<const QoreFloatNode *>(n)->f); case NT_OBJECT: { const QoreObject *o = reinterpret_cast<const QoreObject *>(n); // get java object PrivateDataRefHolder<QoreJavaPrivateData> jo(o, CID_OBJECT, xsink); if (!jo) { if (!*xsink) xsink->raiseException("JAVA-UNSUPPORTED-TYPE", "cannot convert from Qore class '%s' to a Java value; '%s' does not inherit java::lang::Object", o->getClassName(), o->getClassName()); return 0; } return jo->getObject(); } } xsink->raiseException("JAVA-UNSUPPORTED-TYPE", "cannot convert from Qore '%s' to a Java value", get_type_name(n)); return 0; }
* Method long rssconCreate(String device, int baudrate). */ JNIEXPORT jlong JNICALL Java_com_anrisoftware_rsscon_nativeimpl_NativeBinding_rssconCreate( JNIEnv *env, jobject this, jstring devicestr, jint baudratenumber) { LOG4C_CATEGORY log = get_rsscon_log(); log_enter(log, "rssconCreate"); int baudrate = translateBaudrate(baudratenumber); log_trace(log, "Convert device name to c string."); char device[256]; jsize length = (*env)->GetStringUTFLength(env, devicestr); (*env)->GetStringUTFRegion(env, devicestr, 0, length, device); log_trace(log, "Create rsscon device '%s' %d.", device, baudrate); long rsscon = toJava(rssconCreate(device, baudrate)); log_leave(log, "rssconCreate := %d", &rsscon); free_log_and_throw(env); return rsscon; } /** * Method void rssconFree(long rsscon). */ JNIEXPORT void JNICALL Java_com_anrisoftware_rsscon_nativeimpl_NativeBinding_rssconFree( JNIEnv *env, jobject this, jlong rssconaddr) { Rsscon *rsscon = (Rsscon*) toC(rssconaddr); bool ret = rssconFree(rsscon); if (!ret) { throwIOExceptionDevice(env,
static jobject toJava(JNIEnv *env, SimulatorResourceModel::Attribute &attribute) { auto value = attribute.getValue(); return toJava(env, value); }