Skip to content

Commit

Permalink
Add DcJsonrpcInstance class
Browse files Browse the repository at this point in the history
  • Loading branch information
link2xt committed Feb 28, 2023
1 parent df58225 commit f70c7f5
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 4 deletions.
39 changes: 39 additions & 0 deletions jni/dc_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -1947,3 +1947,42 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcProvider_getOverviewPage(JNIEnv *env
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_provider_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;
}
8 changes: 4 additions & 4 deletions scripts/ndk-make.sh
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ if test -z $1 || test $1 = armeabi-v7a; then
export CFLAGS=-D__ANDROID_API__=16
TARGET_CC=armv7a-linux-androideabi16-clang \
TARGET_AR=llvm-ar \
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi -- -L "$TMPLIB"
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi --features jsonrpc -- -L "$TMPLIB"
cp target/armv7-linux-androideabi/$RELEASE/libdeltachat.a $jnidir/armeabi-v7a
fi

Expand All @@ -124,7 +124,7 @@ if test -z $1 || test $1 = arm64-v8a; then
export CFLAGS=-D__ANDROID_API__=21
TARGET_CC=aarch64-linux-android21-clang \
TARGET_AR=llvm-ar \
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi -- -L "$TMPLIB"
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi --features jsonrpc -- -L "$TMPLIB"
cp target/aarch64-linux-android/$RELEASE/libdeltachat.a $jnidir/arm64-v8a
fi

Expand All @@ -133,7 +133,7 @@ if test -z $1 || test $1 = x86; then
export CFLAGS=-D__ANDROID_API__=16
TARGET_CC=i686-linux-android16-clang \
TARGET_AR=llvm-ar \
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target i686-linux-android -p deltachat_ffi -- -L "$TMPLIB"
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target i686-linux-android -p deltachat_ffi --features jsonrpc -- -L "$TMPLIB"
cp target/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86
fi

Expand All @@ -142,7 +142,7 @@ if test -z $1 || test $1 = x86_64; then
export CFLAGS=-D__ANDROID_API__=21
TARGET_CC=x86_64-linux-android21-clang \
TARGET_AR=llvm-ar \
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi -- -L "$TMPLIB"
cargo "+$RUSTUP_TOOLCHAIN" rustc $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi --features jsonrpc -- -L "$TMPLIB"
cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64
fi

Expand Down
22 changes: 22 additions & 0 deletions src/com/b44t/messenger/DcJsonrpcIntance.java
Original file line number Diff line number Diff line change
@@ -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();
}

0 comments on commit f70c7f5

Please sign in to comment.