/* * Class: mesos_MesosExecutorDriver * Method: join * Signature: ()I */ JNIEXPORT jint JNICALL Java_mesos_MesosExecutorDriver_join (JNIEnv *env, jobject thiz) { jclass clazz = env->GetObjectClass(thiz); jfieldID __driver = env->GetFieldID(clazz, "__driver", "J"); MesosExecutorDriver *driver = (MesosExecutorDriver *) env->GetLongField(thiz, __driver); return driver->join(); }
/* * Class: org_apache_mesos_MesosExecutorDriver * Method: join * Signature: ()Lorg/apache/mesos/Protos/Status; */ JNIEXPORT jobject JNICALL Java_org_apache_mesos_MesosExecutorDriver_join (JNIEnv* env, jobject thiz) { jclass clazz = env->GetObjectClass(thiz); jfieldID __driver = env->GetFieldID(clazz, "__driver", "J"); MesosExecutorDriver* driver = (MesosExecutorDriver*) env->GetLongField(thiz, __driver); Status status = driver->join(); return convert<Status>(env, status); }
/* * Class: mesos_MesosExecutorDriver * Method: sendFrameworkMessage * Signature: (Lmesos/FrameworkMessage;)I */ JNIEXPORT jint JNICALL Java_mesos_MesosExecutorDriver_sendFrameworkMessage (JNIEnv *env, jobject thiz, jobject jmessage) { // Construct a C++ FrameworkMessage from the Java FrameworkMessage. FrameworkMessage message = construct<FrameworkMessage>(env, jmessage); // Now invoke the underlying driver. jclass clazz = env->GetObjectClass(thiz); jfieldID __driver = env->GetFieldID(clazz, "__driver", "J"); MesosExecutorDriver *driver = (MesosExecutorDriver *) env->GetLongField(thiz, __driver); return driver->sendFrameworkMessage(message); }
/* * Class: mesos_MesosExecutorDriver * Method: sendStatusUpdate * Signature: (Lmesos/TaskStatus;)I */ JNIEXPORT jint JNICALL Java_mesos_MesosExecutorDriver_sendStatusUpdate (JNIEnv *env, jobject thiz, jobject jstatus) { // Construct a C++ TaskStatus from the Java TaskStatus. TaskStatus status = construct<TaskStatus>(env, jstatus); // Now invoke the underlying driver. jclass clazz = env->GetObjectClass(thiz); jfieldID __driver = env->GetFieldID(clazz, "__driver", "J"); MesosExecutorDriver *driver = (MesosExecutorDriver *) env->GetLongField(thiz, __driver); return driver->sendStatusUpdate(status); }
/* * Class: org_apache_mesos_MesosExecutorDriver * Method: sendFrameworkMessage * Signature: ([B)I */ JNIEXPORT jint JNICALL Java_org_apache_mesos_MesosExecutorDriver_sendFrameworkMessage (JNIEnv* env, jobject thiz, jbyteArray jdata) { // Construct a C++ string from the Java byte array. jbyte* data = env->GetByteArrayElements(jdata, NULL); jsize length = env->GetArrayLength(jdata); string temp((char*) data, (size_t) length); env->ReleaseByteArrayElements(jdata, data, 0); // Now invoke the underlying driver. jclass clazz = env->GetObjectClass(thiz); jfieldID __driver = env->GetFieldID(clazz, "__driver", "J"); MesosExecutorDriver* driver = (MesosExecutorDriver*) env->GetLongField(thiz, __driver); return driver->sendFrameworkMessage(temp); }
/* * Class: org_apache_mesos_MesosExecutorDriver * Method: finalize * Signature: ()V */ JNIEXPORT void JNICALL Java_org_apache_mesos_MesosExecutorDriver_finalize (JNIEnv* env, jobject thiz) { jclass clazz = env->GetObjectClass(thiz); jfieldID __driver = env->GetFieldID(clazz, "__driver", "J"); MesosExecutorDriver* driver = (MesosExecutorDriver*) env->GetLongField(thiz, __driver); // Call stop just in case. driver->stop(); driver->join(); delete driver; jfieldID __exec = env->GetFieldID(clazz, "__exec", "J"); JNIExecutor* exec = (JNIExecutor*) env->GetLongField(thiz, __exec); env->DeleteWeakGlobalRef(exec->jdriver); delete exec; }