diff options
Diffstat (limited to 'storage/bdb/libdb_java/java_Dbt.c')
-rw-r--r-- | storage/bdb/libdb_java/java_Dbt.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/storage/bdb/libdb_java/java_Dbt.c b/storage/bdb/libdb_java/java_Dbt.c new file mode 100644 index 00000000000..d21109f3408 --- /dev/null +++ b/storage/bdb/libdb_java/java_Dbt.c @@ -0,0 +1,59 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1997-2002 + * Sleepycat Software. All rights reserved. + */ +#include "db_config.h" + +#ifndef lint +static const char revid[] = "$Id: java_Dbt.c,v 11.18 2002/06/20 11:11:55 mjc Exp $"; +#endif /* not lint */ + +#include <jni.h> +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#include "db_int.h" +#include "java_util.h" +#include "com_sleepycat_db_Dbt.h" + +JNIEXPORT void JNICALL Java_com_sleepycat_db_Dbt_init + (JNIEnv *jnienv, jobject jthis) +{ + DBT_JAVAINFO *dbtji; + + dbtji = dbjit_construct(); + set_private_dbobj(jnienv, name_DBT, jthis, dbtji); +} + +JNIEXPORT jbyteArray JNICALL Java_com_sleepycat_db_Dbt_create_1data + (JNIEnv *jnienv, jobject jthis) +{ + DBT_JAVAINFO *db_this; + jbyteArray arr = NULL; + int len; + + db_this = get_DBT_JAVAINFO(jnienv, jthis); + if (verify_non_null(jnienv, db_this)) { + len = db_this->dbt.size; + if ((arr = (*jnienv)->NewByteArray(jnienv, len)) == NULL) + goto out; + (*jnienv)->SetByteArrayRegion(jnienv, arr, 0, len, + db_this->dbt.data); + } +out: return (arr); +} + +JNIEXPORT void JNICALL Java_com_sleepycat_db_Dbt_finalize + (JNIEnv *jnienv, jobject jthis) +{ + DBT_JAVAINFO *dbtji; + + dbtji = get_DBT_JAVAINFO(jnienv, jthis); + if (dbtji) { + /* Free any data related to DBT here */ + dbjit_destroy(dbtji); + } +} |