mirror of
https://github.com/kiwix/java-libkiwix.git
synced 2025-09-10 07:36:26 -04:00
fixup! Allow zim::Archive
to be created with a set of File descriptor.
This commit is contained in:
parent
8d684cee8e
commit
6c0e60c9c8
@ -64,16 +64,17 @@ int jni2fd(const jobject& fdObj, JNIEnv* env)
|
|||||||
|
|
||||||
zim::FdInput jni2fdInput(const jobject& fdInputObj, JNIEnv* env)
|
zim::FdInput jni2fdInput(const jobject& fdInputObj, JNIEnv* env)
|
||||||
{
|
{
|
||||||
jclass class_fdesc = env->FindClass("org/kiwix/FdInput");
|
jclass class_fdesc = env->FindClass("org/kiwix/libzim/FdInput");
|
||||||
jfieldID field_id = env->GetFieldID(class_fdesc, "fd", "java/io/FileDescriptor");
|
|
||||||
jobject fdObj = env->GetField(fdInputObj, field_id);
|
jfieldID field_id = env->GetFieldID(class_fdesc, "fd", "Ljava/io/FileDescriptor;");
|
||||||
|
jobject fdObj = env->GetObjectField(fdInputObj, field_id);
|
||||||
int fd = jni2fd(fdObj, env);
|
int fd = jni2fd(fdObj, env);
|
||||||
|
|
||||||
field_id = env->GetFieldID(class_fdesc, "offset", "J");
|
field_id = env->GetFieldID(class_fdesc, "offset", "J");
|
||||||
long offset = env->GetLongField(fdObj, field_id);
|
long offset = env->GetLongField(fdInputObj, field_id);
|
||||||
|
|
||||||
field_id = env->GetFieldID(class_fdesc, "size", "J");
|
field_id = env->GetFieldID(class_fdesc, "size", "J");
|
||||||
long size = env->GetLongField(fdObj, field_id);
|
long size = env->GetLongField(fdInputObj, field_id);
|
||||||
|
|
||||||
return zim::FdInput(fd, offset, size);
|
return zim::FdInput(fd, offset, size);
|
||||||
}
|
}
|
||||||
@ -147,13 +148,13 @@ JNIEXPORT void JNICALL Java_org_kiwix_libzim_Archive_setNativeArchiveEmbeddedFds
|
|||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
|
|
||||||
jsize length = env->GetArrayLength(fdsObj);
|
jsize length = env->GetArrayLength(fdsObj);
|
||||||
std::vector<zim::FdInput> v(length);
|
std::vector<zim::FdInput> v;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; i<length; i++) {
|
for(i = 0; i<length; i++) {
|
||||||
jobject fdObj = env->GetObjectArrayElement(fdsObj, i);
|
jobject fdObj = env->GetObjectArrayElement(fdsObj, i);
|
||||||
auto fdInput = jni2fdInput(fdObj, env);
|
auto fdInput = jni2fdInput(fdObj, env);
|
||||||
v.push_pack(fdInput);
|
v.push_back(fdInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -26,4 +26,10 @@ public class FdInput
|
|||||||
public FileDescriptor fd;
|
public FileDescriptor fd;
|
||||||
public long offset;
|
public long offset;
|
||||||
public long size;
|
public long size;
|
||||||
|
|
||||||
|
public FdInput(FileDescriptor fd_, long offset_, long size_) {
|
||||||
|
fd = fd_;
|
||||||
|
offset = offset_;
|
||||||
|
size = size_;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user