예제 #1
0
	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;
	}
예제 #2
0
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;
}
예제 #3
0
	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;
}
예제 #5
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);
 }