mirror of
https://github.com/deltachat/deltachat-android.git
synced 2025-10-06 03:49:58 +02:00
Add DcJsonrpcInstance class
This commit is contained in:
parent
4971c3a8aa
commit
4f468a4b8f
4 changed files with 71 additions and 4 deletions
|
@ -245,6 +245,11 @@ JNIEXPORT jlong Java_com_b44t_messenger_DcAccounts_getEventEmitterCPtr(JNIEnv *e
|
||||||
return (jlong)dc_accounts_get_event_emitter(get_dc_accounts(env, obj));
|
return (jlong)dc_accounts_get_event_emitter(get_dc_accounts(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jlong Java_com_b44t_messenger_DcAccounts_getJsonrpcInstanceCPtr(JNIEnv *env, jobject obj)
|
||||||
|
{
|
||||||
|
return (jlong)dc_jsonrpc_init(get_dc_accounts(env, obj));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcAccounts_startIo(JNIEnv *env, jobject obj)
|
JNIEXPORT void Java_com_b44t_messenger_DcAccounts_startIo(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
|
@ -2137,3 +2142,41 @@ JNIEXPORT jbyteArray Java_com_b44t_messenger_DcHttpResponse_getBlob(JNIEnv *env,
|
||||||
dc_str_unref((char*)ptr);
|
dc_str_unref((char*)ptr);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* DcJsonrpcInstance
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
static dc_jsonrpc_instance_t* get_dc_jsonrpc_instance(JNIEnv *env, jobject obj)
|
||||||
|
{
|
||||||
|
static jfieldID fid = 0;
|
||||||
|
if (fid==0) {
|
||||||
|
jclass cls = (*env)->GetObjectClass(env, obj);
|
||||||
|
fid = (*env)->GetFieldID(env, cls, "jsonrpcInstanceCPtr", "J" /*Signature, J=long*/);
|
||||||
|
}
|
||||||
|
if (fid) {
|
||||||
|
return (dc_jsonrpc_instance_t*)(*env)->GetLongField(env, obj, fid);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
JNIEXPORT void Java_com_b44t_messenger_DcJsonrpcInstance_unrefJsonrpcInstanceCPtr(JNIEnv *env, jobject obj)
|
||||||
|
{
|
||||||
|
dc_jsonrpc_unref(get_dc_jsonrpc_instance(env, obj));
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void Java_com_b44t_messenger_DcJsonrpcInstance_request(JNIEnv *env, jobject obj, jstring request)
|
||||||
|
{
|
||||||
|
CHAR_REF(request);
|
||||||
|
dc_jsonrpc_request(get_dc_jsonrpc_instance(env, obj), request);
|
||||||
|
CHAR_UNREF(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jstring Java_com_b44t_messenger_DcJsonrpcInstance_getNextResponse(JNIEnv *env, jobject obj)
|
||||||
|
{
|
||||||
|
char* temp = dc_jsonrpc_next_response(get_dc_jsonrpc_instance(env, obj));
|
||||||
|
jstring ret = JSTRING_NEW(temp);
|
||||||
|
dc_str_unref(temp);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -115,7 +115,7 @@ if test -z $1 || test $1 = armeabi-v7a; then
|
||||||
TARGET_CC="$TOOLCHAIN/bin/armv7a-linux-androideabi16-clang" \
|
TARGET_CC="$TOOLCHAIN/bin/armv7a-linux-androideabi16-clang" \
|
||||||
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
||||||
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
||||||
cargo build $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi
|
cargo build $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi --features jsonrpc
|
||||||
cp target/armv7-linux-androideabi/$RELEASE/libdeltachat.a $jnidir/armeabi-v7a
|
cp target/armv7-linux-androideabi/$RELEASE/libdeltachat.a $jnidir/armeabi-v7a
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ if test -z $1 || test $1 = arm64-v8a; then
|
||||||
TARGET_CC="$TOOLCHAIN/bin/aarch64-linux-android21-clang" \
|
TARGET_CC="$TOOLCHAIN/bin/aarch64-linux-android21-clang" \
|
||||||
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
||||||
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
||||||
cargo build $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi
|
cargo build $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi --features jsonrpc
|
||||||
cp target/aarch64-linux-android/$RELEASE/libdeltachat.a $jnidir/arm64-v8a
|
cp target/aarch64-linux-android/$RELEASE/libdeltachat.a $jnidir/arm64-v8a
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ if test -z $1 || test $1 = x86; then
|
||||||
TARGET_CC="$TOOLCHAIN/bin/i686-linux-android16-clang" \
|
TARGET_CC="$TOOLCHAIN/bin/i686-linux-android16-clang" \
|
||||||
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
||||||
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
||||||
cargo build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi
|
cargo build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi --features jsonrpc
|
||||||
cp target/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86
|
cp target/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ if test -z $1 || test $1 = x86_64; then
|
||||||
TARGET_CC="$TOOLCHAIN/bin/x86_64-linux-android21-clang" \
|
TARGET_CC="$TOOLCHAIN/bin/x86_64-linux-android21-clang" \
|
||||||
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
|
||||||
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
|
||||||
cargo build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi
|
cargo build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi --features jsonrpc
|
||||||
cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64
|
cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ public class DcAccounts {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DcEventEmitter getEventEmitter () { return new DcEventEmitter(getEventEmitterCPtr()); }
|
public DcEventEmitter getEventEmitter () { return new DcEventEmitter(getEventEmitterCPtr()); }
|
||||||
|
public DcJsonrpcInstance getJsonrpcInstance () { return new DcJsonrpcInstance(getJsonrpcInstanceCPtr()); }
|
||||||
public native void startIo ();
|
public native void startIo ();
|
||||||
public native void stopIo ();
|
public native void stopIo ();
|
||||||
public native void maybeNetwork ();
|
public native void maybeNetwork ();
|
||||||
|
@ -38,6 +39,7 @@ public class DcAccounts {
|
||||||
private native long createAccountsCPtr (String osName, String dir);
|
private native long createAccountsCPtr (String osName, String dir);
|
||||||
private native void unrefAccountsCPtr ();
|
private native void unrefAccountsCPtr ();
|
||||||
private native long getEventEmitterCPtr ();
|
private native long getEventEmitterCPtr ();
|
||||||
|
private native long getJsonrpcInstanceCPtr ();
|
||||||
private native long getAccountCPtr (int accountId);
|
private native long getAccountCPtr (int accountId);
|
||||||
private native long getSelectedAccountCPtr ();
|
private native long getSelectedAccountCPtr ();
|
||||||
}
|
}
|
||||||
|
|
22
src/com/b44t/messenger/DcJsonrpcInstance.java
Normal file
22
src/com/b44t/messenger/DcJsonrpcInstance.java
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
package com.b44t.messenger;
|
||||||
|
|
||||||
|
public class DcJsonrpcInstance {
|
||||||
|
|
||||||
|
public DcJsonrpcInstance(long jsonrpcInstanceCPtr) {
|
||||||
|
this.jsonrpcInstanceCPtr = jsonrpcInstanceCPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override protected void finalize() throws Throwable {
|
||||||
|
super.finalize();
|
||||||
|
unrefJsonrpcInstanceCPtr();
|
||||||
|
jsonrpcInstanceCPtr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public native void request(String request);
|
||||||
|
public native String getNextResponse();
|
||||||
|
|
||||||
|
// working with raw c-data
|
||||||
|
private long jsonrpcInstanceCPtr; // CAVE: the name is referenced in the JNI
|
||||||
|
private native long getNextEventCPtr ();
|
||||||
|
private native void unrefJsonrpcInstanceCPtr();
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue