You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/04/27 08:14:04 UTC
svn commit: r768872 - in /commons/sandbox/runtime/trunk/src/main:
java/org/apache/commons/runtime/ native/include/ native/shared/ native/test/
Author: mturk
Date: Mon Apr 27 06:14:03 2009
New Revision: 768872
URL: http://svn.apache.org/viewvc?rev=768872&view=rev
Log:
Use pointer macros
Modified:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor.java
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor32.java
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor64.java
commons/sandbox/runtime/trunk/src/main/native/include/acr_descriptor.h
commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h
commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c
commons/sandbox/runtime/trunk/src/main/native/test/testcase.c
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor.java?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor.java Mon Apr 27 06:14:03 2009
@@ -34,17 +34,27 @@
*/
public abstract class Descriptor implements Closeable {
+ /* Last error operation.
+ * Set by the native on error condition, but never cleared.
+ * If the operation is recoverable the clearerr() should be
+ * used after the recovery.
+ */
private int IERRNUM;
/*
* Descriptor can be only created from native code.
* Suppress any instantiation except form internal classes.
*/
- protected Descriptor()
+ private Descriptor()
{
// No Instance
}
+ protected Descriptor(int e)
+ {
+ IERRNUM = e;
+ }
+
private native void close0()
throws IOException, InstantiationException;
@@ -61,6 +71,7 @@
*/
public static final Descriptor NULL;
static {
+ // Initialize NULL descriptor
NULL = nulld0();
}
@@ -123,6 +134,15 @@
}
/**
+ * Set the last error of the descriptor to {@code zero}.
+ * This method is public, but it is intended for the internal use only.
+ */
+ public final void clearerr()
+ {
+ IERRNUM = 0;
+ }
+
+ /**
* Check if the underlying Operating system descriptor is closed.
* @return {@code true} if descriptor is closed {@code false} otherwise.
*/
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor32.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor32.java?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor32.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor32.java Mon Apr 27 06:14:03 2009
@@ -27,17 +27,18 @@
private int IHANDLE;
private int PHANDLE;
- private int CLEANUP;
+ private int HANDLER;
/*
* Descriptor can be only created from native code.
* Suppress any instantiation except form JNI.
*/
- protected Descriptor32(int i, int l, int c)
+ protected Descriptor32(int e, int i, int l, int h)
{
+ super(e);
IHANDLE = i;
PHANDLE = l;
- CLEANUP = c;
+ HANDLER = h;
}
public boolean isClosed()
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor64.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor64.java?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor64.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Descriptor64.java Mon Apr 27 06:14:03 2009
@@ -27,17 +27,18 @@
private int IHANDLE;
private long PHANDLE;
- private long CLEANUP;
+ private long HANDLER;
/*
* Descriptor can be only created from native code.
* Suppress any instantiation except form JNI.
*/
- private Descriptor64(int i, long l, long c)
+ private Descriptor64(int e, int i, long l, long h)
{
+ super(e);
IHANDLE = i;
PHANDLE = l;
- CLEANUP = c;
+ HANDLER = h;
}
public boolean isClosed()
Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_descriptor.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_descriptor.h?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_descriptor.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_descriptor.h Mon Apr 27 06:14:03 2009
@@ -36,22 +36,33 @@
ACR_DESC_SYNC
} acr_descriptor_cb_type_e;
+typedef struct acr_descriptor_cb_t {
+ int di; /* Integer descriptor */
+ void *dp; /* Pointer descriptor */
+ void **ctxp; /* Context data pointer */
+ jobject data; /* handler provided Java object */
+} acr_descriptor_cb_t;
+
/**
- * Descriptor callback function prototype.
- * The callback function must check for data validity.
+ * Descriptor handler function prototype.
+ * The handler function must check for data validity.
* Consecutive invocations will always contain NULL data.
*/
-typedef int (acr_descriptor_callback_fn_t)(acr_descriptor_cb_type_e, int, void *);
+typedef int (acr_descriptor_handler_fn_t)(JNIEnv *, jobject,
+ acr_descriptor_cb_type_e,
+ acr_descriptor_cb_t *);
/**
* Create new Descriptor class instance
* @param env Current JNI environment
+ * @param e Initial errno code for the descriptor object.
* @param i Native integer descriptor to wrap into Descriptor class
* @param p Native pointer descriptor to wrap into Descriptor class
- * @param cb callback function to use
+ * @param cb handler function to use
+ * @param ho handler function to use
*/
-ACR_DECLARE(jobject) ACR_DescriptorCreate(JNIEnv *env, int i, void *p,
- acr_descriptor_callback_fn_t *cb);
+ACR_DECLARE(jobject) ACR_DescriptorCreate(JNIEnv *env, int e, int i, void *p,
+ acr_descriptor_handler_fn_t *cb);
/**
* Create new Descriptor array
@@ -64,12 +75,20 @@
* Call descriptor cleanup and clear Java object.
* @param env Current JNI environment
* @param obj Java Descriptor object to clean. The function will
- * clear the callback and data inside Java object.
+ * clear the handler and data inside Java object.
* @return ACR_INCOMPLETE if already cleared.
*/
ACR_DECLARE(int) ACR_DescriptorCleanup(JNIEnv *env, jobject obj);
/**
+ * Get the native errno number from the Descriptor object.
+ * @param env Current JNI environment
+ * @param obj Java Descriptor object use.
+ * @return Underlying errno.
+ */
+ACR_DECLARE(int) ACR_DescriptorGetErr(JNIEnv *env, jobject obj);
+
+/**
* Get the native int descriptor from the Descriptor object.
* @param env Current JNI environment
* @param obj Java Descriptor object use.
Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h Mon Apr 27 06:14:03 2009
@@ -376,10 +376,12 @@
#define IFIELD_PTR "J"
#define GET_IFIELD_P(I, O) \
_f##I##n.i ? (*_E)->GetLongField(_E, (O), _f##I##n.i) : 0
+#define GET_IFIELD_V(I, O, T) \
+ _f##I##n.i ? (T)((acr_ssize_t)(*_E)->GetLongField(_E, (O), _f##I##n.i)) : NULL
#define SET_IFIELD_P(I, O, V) \
- if (_f##I##n.i) { \
- (*_E)->SetLongField(_E, (O), _f##I##n.i, (jlong)(V)); \
+ if (_f##I##n.i) { \
+ (*_E)->SetLongField(_E, (O), _f##I##n.i, (jlong)((acr_ssize_t)(V))); \
} else (void)(0)
#else /* CC_SIZEOF_VOIDP == 4 */
@@ -387,10 +389,12 @@
#define IFIELD_PTR "I"
#define GET_IFIELD_P(I, O) \
_f##I##n.i ? (*_E)->GetIntField(_E, (O), _f##I##n.i) : 0
+#define GET_IFIELD_V(I, O, T) \
+ _f##I##n.i ? (T)((acr_ssize_t)(*_E)->GetIntField(_E, (O), _f##I##n.i)) : NULL
#define SET_IFIELD_P(I, O, V) \
if (_f##I##n.i) { \
- (*_E)->SetIntField(_E, (O), _f##I##n.i, (jint)(V)); \
+ (*_E)->SetIntField(_E, (O), _f##I##n.i, (jint)((acr_ssize_t)(V))); \
} else (void)(0)
#endif /* CC_SIZEOF_VOIDP == 8 */
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c Mon Apr 27 06:14:03 2009
@@ -39,7 +39,7 @@
J_DECLARE_M_ID(0000) = {
NULL,
"<init>",
- "(IJJ)V"
+ "(IIJJ)V"
};
#else
@@ -53,7 +53,7 @@
J_DECLARE_M_ID(0000) = {
NULL,
"<init>",
- "(III)V"
+ "(IIII)V"
};
#endif
@@ -72,7 +72,7 @@
J_DECLARE_F_ID(0002) = {
NULL,
- "CLEANUP",
+ "HANDLER",
IFIELD_PTR
};
@@ -123,8 +123,7 @@
if (!_clazzn.i) {
initd0(_E);
}
- nd = ACR_DescriptorCreate(_E, -1, NULL, NULL);
- SET_IFIELD_I(0003, nd, ACR_EBADF);
+ nd = ACR_DescriptorCreate(_E, ACR_EBADF, -1, NULL, NULL);
return nd;
}
@@ -132,22 +131,21 @@
ACR_JNI_EXPORT_DECLARE(void, Descriptor, close0)(ACR_JNISTDARGS)
{
if (_clazzn.i && J4MID(0000)) {
- acr_descriptor_callback_fn_t *callback;
- jint i = GET_IFIELD_I(0000, _O);
- jniptr p = GET_IFIELD_P(0001, _O);
- jniptr c = GET_IFIELD_P(0002, _O);
+ acr_descriptor_cb_t cb;
+ acr_descriptor_handler_fn_t *handler;
+ cb.di = GET_IFIELD_I(0000, _O);
+ cb.dp = GET_IFIELD_V(0001, _O, void *);
+ handler = GET_IFIELD_V(0002, _O, acr_descriptor_handler_fn_t *);
- if (p) {
- SET_IFIELD_P(0001, _O, 0);
- }
- if (i >= 0) {
+ if (cb.di >= 0) {
SET_IFIELD_I(0000, _O, -1);
}
-
- callback = N2P(c, acr_descriptor_callback_fn_t *);
- if (callback) {
- int rc = (*callback)(ACR_DESC_CLOSE, i, N2P(p, void *));
- if (rc) {
+ if (cb.dp) {
+ SET_IFIELD_P(0001, _O, NULL);
+ }
+ if (handler) {
+ int rc;
+ if ((rc = (*handler)(_E, _O, ACR_DESC_CLOSE, &cb))) {
/* Throw IOException with errno message */
ACR_ThrowException(_E, THROW_FMARK, ACR_EX_EIO, rc);
}
@@ -160,21 +158,20 @@
ACR_JNI_EXPORT_DECLARE(void, Descriptor, close1)(ACR_JNISTDARGS)
{
if (_clazzn.i && J4MID(0000)) {
- acr_descriptor_callback_fn_t *callback;
- jint i = GET_IFIELD_I(0000, _O);
- jniptr p = GET_IFIELD_P(0001, _O);
- jniptr c = GET_IFIELD_P(0002, _O);
+ acr_descriptor_cb_t cb;
+ acr_descriptor_handler_fn_t *handler;
+ cb.di = GET_IFIELD_I(0000, _O);
+ cb.dp = GET_IFIELD_V(0001, _O, void *);
+ handler = GET_IFIELD_V(0002, _O, acr_descriptor_handler_fn_t *);
- if (p) {
- SET_IFIELD_P(0001, _O, 0);
- }
- if (i >= 0) {
+ if (cb.di >= 0) {
SET_IFIELD_I(0000, _O, -1);
}
-
- callback = N2P(c, acr_descriptor_callback_fn_t *);
- if (callback) {
- (*callback)(ACR_DESC_CLOSE, i, N2P(p, void *));
+ if (cb.dp) {
+ SET_IFIELD_P(0001, _O, NULL);
+ }
+ if (handler) {
+ (*handler)(_E, _O, ACR_DESC_CLOSE, &cb);
}
}
}
@@ -182,15 +179,15 @@
ACR_JNI_EXPORT_DECLARE(void, Descriptor, sync0)(ACR_JNISTDARGS)
{
if (_clazzn.i && J4MID(0000)) {
- acr_descriptor_callback_fn_t *callback;
- jint i = GET_IFIELD_I(0000, _O);
- jniptr p = GET_IFIELD_P(0001, _O);
- jniptr c = GET_IFIELD_P(0002, _O);
-
- callback = N2P(c, acr_descriptor_callback_fn_t *);
- if (callback) {
- int rc = (*callback)(ACR_DESC_SYNC, i, N2P(p, void *));
- if (rc) {
+ acr_descriptor_cb_t cb;
+ acr_descriptor_handler_fn_t *handler;
+ cb.di = GET_IFIELD_I(0000, _O);
+ cb.dp = GET_IFIELD_V(0001, _O, void *);
+ handler = GET_IFIELD_V(0002, _O, acr_descriptor_handler_fn_t *);
+
+ if (handler) {
+ int rc;
+ if ((rc = (*handler)(_E, _O, ACR_DESC_SYNC, &cb))) {
if (rc == ACR_EINVAL)
ACR_ThrowException(_E, THROW_NMARK, ACR_EX_ESYNC, 0);
else
@@ -203,12 +200,12 @@
}
-ACR_DECLARE(jobject) ACR_DescriptorCreate(JNIEnv *_E, int i, void *p,
- acr_descriptor_callback_fn_t *cb)
+ACR_DECLARE(jobject) ACR_DescriptorCreate(JNIEnv *_E, int e, int i, void *p,
+ acr_descriptor_handler_fn_t *cb)
{
if (_clazzn.i && J4MID(0000))
return (*_E)->NewObject(_E, _clazzn.i, J4MID(0000),
- (jint)i, P2N(p), P2N(cb));
+ (jint)e, (jint)i, P2N(p), P2N(cb));
else {
ACR_SET_OS_ERROR(ACR_ECLASSNOTFOUND);
return NULL;
@@ -218,32 +215,29 @@
ACR_DECLARE(int) ACR_DescriptorCleanup(ACR_JNISTDARGS)
{
if (_clazzn.i && J4MID(0000)) {
- acr_descriptor_callback_fn_t *callback;
- jint i = GET_IFIELD_I(0000, _O);
- jniptr p = GET_IFIELD_P(0001, _O);
- jniptr c = GET_IFIELD_P(0002, _O);
+ acr_descriptor_cb_t cb;
+ acr_descriptor_handler_fn_t *handler;
if ((*_E)->MonitorEnter(_E, _O)) {
/* Object locking failed */
return ACR_ENOLOCK;
}
- i = GET_IFIELD_I(0000, _O);
- p = GET_IFIELD_P(0001, _O);
- c = GET_IFIELD_P(0002, _O);
- if (p) {
- SET_IFIELD_P(0001, _O, 0);
+ cb.di = GET_IFIELD_I(0000, _O);
+ cb.dp = GET_IFIELD_V(0001, _O, void *);
+ handler = GET_IFIELD_V(0002, _O, acr_descriptor_handler_fn_t *);
+ if (cb.di >= 0) {
+ SET_IFIELD_I(0000, _O, -1);
}
- if (c) {
- SET_IFIELD_P(0002, _O, 0);
+ if (cb.dp) {
+ SET_IFIELD_P(0001, _O, NULL);
}
- if (i >= 0) {
- SET_IFIELD_I(0000, _O, -1);
+ if (handler) {
+ SET_IFIELD_P(0002, _O, NULL);
}
(*_E)->MonitorExit(_E, _O);
- callback = N2P(c, acr_descriptor_callback_fn_t *);
- if (callback) {
- return (*callback)(ACR_DESC_CLOSE, i, N2P(p, void *));
+ if (handler) {
+ return (*handler)(_E, _O, ACR_DESC_CLOSE, &cb);
}
else {
/* Already cleared */
@@ -257,8 +251,7 @@
ACR_DECLARE(void *) ACR_DescriptorGetPtr(ACR_JNISTDARGS)
{
if (_clazzn.i && J4MID(0000)) {
- jniptr p = GET_IFIELD_P(0001, _O);
- return N2P(p, void *);
+ return GET_IFIELD_V(0001, _O, void *);
}
else {
ACR_SET_OS_ERROR(ACR_ECLASSNOTFOUND);
@@ -277,6 +270,17 @@
}
}
+ACR_DECLARE(int) ACR_DescriptorGetErr(ACR_JNISTDARGS)
+{
+ if (_clazzn.i && J4MID(0000)) {
+ return GET_IFIELD_I(0003, _O);
+ }
+ else {
+ ACR_SET_OS_ERROR(ACR_ECLASSNOTFOUND);
+ return -1;
+ }
+}
+
ACR_DECLARE(int) ACR_DescriptorSetPtr(ACR_JNISTDARGS, void *p)
{
if (_clazzn.i && J4MID(0000)) {
@@ -284,7 +288,7 @@
/* Object locking failed */
return ACR_ENOLOCK;
}
- SET_IFIELD_P(0001, _O, P2N(p));
+ SET_IFIELD_P(0001, _O, p);
#ifdef _JNI_CHECK_EXCEPTIONS
if ((*_E)->ExceptionCheck(_E)) {
return ACR_EGENERAL;
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c Mon Apr 27 06:14:03 2009
@@ -135,15 +135,15 @@
{
if (_clazzn.i && J4MID(0000)) {
acr_pointer_cleanup_fn_t *cleanup;
- jniptr h = GET_IFIELD_P(0000, _O);
- jniptr c = GET_IFIELD_P(0001, _O);
+ void *pointer;
- if (h) {
- SET_IFIELD_P(0000, _O, 0);
+ pointer = GET_IFIELD_V(0000, _O, void *);
+ cleanup = GET_IFIELD_V(0001, _O, acr_pointer_cleanup_fn_t *);
+ if (pointer) {
+ SET_IFIELD_P(0000, _O, NULL);
}
- cleanup = (acr_pointer_cleanup_fn_t *)((acr_ptr_t)c);
if (cleanup) {
- int rc = (*cleanup)((void *)((acr_ptr_t)h));
+ int rc = (*cleanup)(pointer);
if (rc) {
/* Throw RuntimeException with errno message */
ACR_ThrowException(_E, THROW_FMARK, ACR_EX_ERUNTIME, rc);
@@ -159,15 +159,15 @@
{
if (_clazzn.i && J4MID(0000)) {
acr_pointer_cleanup_fn_t *cleanup;
- jniptr h = GET_IFIELD_P(0000, _O);
- jniptr c = GET_IFIELD_P(0001, _O);
+ void *pointer;
- if (h) {
- SET_IFIELD_P(0000, _O, 0);
+ pointer = GET_IFIELD_V(0000, _O, void *);
+ cleanup = GET_IFIELD_V(0001, _O, acr_pointer_cleanup_fn_t *);
+ if (pointer) {
+ SET_IFIELD_P(0000, _O, NULL);
}
- cleanup = N2P(c, acr_pointer_cleanup_fn_t *);
if (cleanup) {
- (*cleanup)(N2P(h, void *));
+ (*cleanup)(pointer);
}
}
}
@@ -216,25 +216,23 @@
{
if (_clazzn.i && J4MID(0000) && _O) {
acr_pointer_cleanup_fn_t *cleanup;
- jniptr h;
- jniptr c;
+ void *pointer;
if ((*_E)->MonitorEnter(_E, _O)) {
/* Object locking failed */
return ACR_ENOLOCK;
}
- h = GET_IFIELD_P(0000, _O);
- c = GET_IFIELD_P(0001, _O);
- if (h) {
- SET_IFIELD_P(0000, _O, 0);
+ pointer = GET_IFIELD_V(0000, _O, void *);
+ cleanup = GET_IFIELD_V(0001, _O, acr_pointer_cleanup_fn_t *);
+ if (pointer) {
+ SET_IFIELD_P(0000, _O, NULL);
}
- if (c) {
- SET_IFIELD_P(0001, _O, 0);
+ if (cleanup) {
+ SET_IFIELD_P(0001, _O, NULL);
}
(*_E)->MonitorExit(_E, _O);
- cleanup = N2P(c, acr_pointer_cleanup_fn_t *);
if (cleanup) {
- return (*cleanup)(N2P(h, void *));
+ return (*cleanup)(pointer);
}
else {
/* Already cleared */
@@ -248,11 +246,11 @@
ACR_DECLARE(void *) ACR_PointerGet(ACR_JNISTDARGS, size_t *len)
{
if (_clazzn.i && J4MID(0000) && _O) {
- jniptr h = GET_IFIELD_P(0000, _O);
+ void *pointer = GET_IFIELD_V(0000, _O, void *);
if (len) {
*len = (size_t)GET_IFIELD_P(0002, _O);
}
- return N2P(h, void *);
+ return pointer;
}
else {
ACR_SET_OS_ERROR(ACR_ECLASSNOTFOUND);
@@ -268,14 +266,14 @@
return ACR_ENOLOCK;
}
- SET_IFIELD_P(0000, _O, (jniptr)((acr_ptr_t)p));
+ SET_IFIELD_P(0000, _O, p);
#ifdef _JNI_CHECK_EXCEPTIONS
if ((*_E)->ExceptionCheck(_E)) {
return ACR_EGENERAL;
}
#endif
if (len) {
- SET_IFIELD_P(0002, _O, (jniptr)len);
+ SET_IFIELD_P(0002, _O, len);
#ifdef _JNI_CHECK_EXCEPTIONS
if ((*_E)->ExceptionCheck(_E)) {
return ACR_EGENERAL;
Modified: commons/sandbox/runtime/trunk/src/main/native/test/testcase.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/test/testcase.c?rev=768872&r1=768871&r2=768872&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/test/testcase.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/test/testcase.c Mon Apr 27 06:14:03 2009
@@ -243,9 +243,9 @@
return 0;
}
-static int dcallback(acr_descriptor_cb_type_e t, int i, void *p)
+static int dhandler(ACR_JNISTDARGS, acr_descriptor_cb_type_e t, acr_descriptor_cb_t *cb)
{
- fprintf(stderr, "[native] Descriptor callback(%d) called: %d/%p\n", t, i, p);
+ fprintf(stderr, "[native] Descriptor handler(%d) called: %d/%p\n", t, cb->di, cb->dp);
fflush(stderr);
return 0;
}
@@ -253,7 +253,7 @@
ACR_JNI_EXPORT_DECLARE(jobject, TestPrivate, test021)(ACR_JNISTDARGS, jint i, jint d)
{
- return ACR_DescriptorCreate(_E, i, I2P(d, void *), dcallback);
+ return ACR_DescriptorCreate(_E, 0, i, I2P(d, void *), dhandler);
}
ACR_JNI_EXPORT_DECLARE(jint, TestPrivate, test022)(ACR_JNISTDARGS, jobject d)
@@ -288,7 +288,7 @@
int i;
jobjectArray a = ACR_NewDescriptorArray(_E, (jsize)l);
for (i = 0; i < l; i++) {
- jobject d = ACR_DescriptorCreate(_E, i, NULL, dcallback);
+ jobject d = ACR_DescriptorCreate(_E, 0, i, NULL, dhandler);
(*_E)->SetObjectArrayElement(_E, a, (jsize)i, d);
}
return a;