void throwOutOfMemory(JNIEnv * env) {
jclass c = env->FindClass("java/lang/OutOfMemoryError"); if (c != nullptr) {
env->ThrowNew(c, "");
}
}
}
extern"C" {
staticvoid executeRequest(void * data) {
Job * job = static_cast< Job * >(data); try {
jvmaccess::VirtualMachine::AttachGuard guard(job->pool->virtualMachine);
JNIEnv * env = guard.getEnvironment(); // Failure of the following Job.execute Java call is ignored; if that // call fails, it should be due to a java.lang.Error, which is not // handled well, anyway:
env->CallObjectMethod(job->job, job->pool->execute);
env->DeleteGlobalRef(job->job); delete job;
} catch (const jvmaccess::VirtualMachine::AttachGuard::CreationException &) { //TODO: DeleteGlobalRef(job->job) delete job;
}
}
}
extern"C" SAL_JNI_EXPORT jbyteArray JNICALL
Java_com_sun_star_lib_uno_environments_remote_NativeThreadPool_threadId(
JNIEnv * env, SAL_UNUSED_PARAMETER jclass) noexcept
{
sal_Sequence * s = nullptr;
uno_getIdOfCurrentThread(&s); //TODO: out of memory
uno_releaseIdFromCurrentThread();
rtl::ByteSequence seq(s);
rtl_byte_sequence_release(s);
sal_Int32 n = seq.getLength();
jbyteArray a = env->NewByteArray(n); // sal_Int32 and jsize are compatible here if (a == nullptr) { return nullptr;
} void * p = env->GetPrimitiveArrayCritical(a, nullptr); if (p == nullptr) { return nullptr;
}
memcpy(p, seq.getConstArray(), n); // sal_Int8 and jbyte ought to be compatible
env->ReleasePrimitiveArrayCritical(a, p, 0); return a;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.