1 /* Statistics classes */
4 * These macros are used by code generated by the s_java script.
6 #define JAVADB_STAT_INT(jenv, jobj, fid, statp, name) \
7 (*jenv)->SetIntField(jenv, jobj, fid, (jint)statp->name)
9 #define JAVADB_STAT_STRING(jenv, jobj, fid, statp, name) \
10 (*jenv)->SetObjectField(jenv, jobj, fid, \
11 (*jenv)->NewStringUTF(jenv, statp->name))
13 #define JAVADB_STAT_LSN(jenv, jobj, fid, statp, name) \
14 (*jenv)->SetObjectField(jenv, jobj, fid, \
15 __dbj_wrap_DB_LSN(jenv, &statp->name))
17 #define JAVADB_STAT_LONG(jenv, jobj, fid, statp, name) \
18 (*jenv)->SetLongField(jenv, jobj, fid, \
21 #define JAVADB_STAT_GID(jenv, jobj, fid, statp, name) { \
23 (*jenv)->NewByteArray(jenv, (jsize)DB_GID_SIZE); \
24 (*jenv)->SetByteArrayRegion(jenv, jarr, \
25 0, (jsize)DB_GID_SIZE, (jbyte *)statp->name); \
26 (*jenv)->SetObjectField(jenv, jobj, fid, jarr); \
30 * We build the active list separately.
32 #define JAVADB_STAT_ACTIVE(jenv, cl, jobj, statp, name) \
35 #include "java_stat_auto.c"
38 %define JAVA_STAT_CLASS(_ctype, _jtype, _name)
39 JAVA_TYPEMAP(_ctype, _jtype, jobject)
40 %typemap(out) _ctype %{
44 $result = (*jenv)->NewObject(jenv, _name##_class, _name##_construct);
46 __dbj_fill_##_name(jenv, $result, $1);
52 JAVA_STAT_CLASS(DB_COMPACT *, com.sleepycat.db.CompactStats, compact)
53 %typemap(freearg) DB_COMPACT * %{ __dbj_fill_compact(jenv, $input, $1); %}
54 %typemap(in) DB_COMPACT * (DB_COMPACT compact) %{
55 memset(&compact, 0, sizeof (DB_COMPACT));
57 $1->compact_fillpercent = (*jenv)->GetIntField(jenv, $input,
58 compact_compact_fillpercent_fid);
59 $1->compact_timeout = (*jenv)->GetIntField(jenv, $input,
60 compact_compact_timeout_fid);
61 $1->compact_pages = (*jenv)->GetIntField(jenv, $input,
62 compact_compact_pages_fid);
65 JAVA_STAT_CLASS(DB_LOCK_STAT *, com.sleepycat.db.LockStats, lock_stat)
66 JAVA_STAT_CLASS(DB_LOG_STAT *, com.sleepycat.db.LogStats, log_stat)
67 JAVA_STAT_CLASS(DB_MPOOL_STAT *, com.sleepycat.db.CacheStats, mpool_stat)
69 JAVA_TYPEMAP(DB_MPOOL_FSTAT **, com.sleepycat.db.CacheFileStats[], jobjectArray)
70 %typemap(out) DB_MPOOL_FSTAT ** {
77 while ($1[len] != NULL)
79 $result = (*jenv)->NewObjectArray(jenv, (jsize)len,
80 mpool_fstat_class, 0);
81 if ($result == NULL) {
85 for (i = 0; i < len; i++) {
86 jobject obj = (*jenv)->NewObject(jenv, mpool_fstat_class,
87 mpool_fstat_construct);
90 return $null; /* an exception is pending */
92 (*jenv)->SetObjectArrayElement(jenv, $result, i, obj);
93 __dbj_fill_mpool_fstat(jenv, obj, $1[i]);
99 JAVA_STAT_CLASS(DB_MUTEX_STAT *, com.sleepycat.db.MutexStats, mutex_stat)
100 JAVA_STAT_CLASS(DB_REP_STAT *, com.sleepycat.db.ReplicationStats, rep_stat)
101 JAVA_STAT_CLASS(DB_REPMGR_STAT *, com.sleepycat.db.ReplicationManagerStats, repmgr_stat)
102 JAVA_STAT_CLASS(DB_SEQUENCE_STAT *, com.sleepycat.db.SequenceStats, seq_stat)
103 JAVA_TYPEMAP(DB_TXN_STAT *, com.sleepycat.db.TransactionStats, jobject)
104 %typemap(out) DB_TXN_STAT * {
106 jobjectArray actives;
111 $result = (*jenv)->NewObject(jenv, txn_stat_class, txn_stat_construct);
113 __dbj_fill_txn_stat(jenv, $result, $1);
115 actives = (*jenv)->NewObjectArray(jenv, (jsize)$1->st_nactive,
116 txn_active_class, 0);
117 if (actives == NULL) {
118 __os_ufree(NULL, $1);
121 (*jenv)->SetObjectField(jenv, $result,
122 txn_stat_st_txnarray_fid, actives);
123 for (i = 0; i < $1->st_nactive; i++) {
124 jobject obj = (*jenv)->NewObject(jenv, txn_active_class,
125 txn_active_construct);
127 __os_ufree(NULL, $1);
128 return $null; /* an exception is pending */
130 (*jenv)->SetObjectArrayElement(jenv, actives, (jsize)i, obj);
131 __dbj_fill_txn_active(jenv, obj, &$1->st_txnarray[i]);
133 __os_ufree(NULL, $1);
137 /* Db.stat return - special case */
138 %typemap(out) void * %{
146 if ((ret = db->get_type(db, &dbtype)) != 0) {
147 __dbj_throw(jenv, ret, NULL, NULL, DB2JDBENV);
152 /* Btree and recno share the same stat structure */
155 $result = (*jenv)->NewObject(jenv, bt_stat_class,
158 __dbj_fill_bt_stat(jenv, $result,
159 (DB_BTREE_STAT *)$1);
162 /* Hash stat structure */
164 $result = (*jenv)->NewObject(jenv, h_stat_class,
167 __dbj_fill_h_stat(jenv, $result,
171 /* Heap stat structure */
173 $result = (*jenv)->NewObject(jenv, heap_stat_class,
174 heap_stat_construct);
176 __dbj_fill_heap_stat(jenv, $result,
181 $result = (*jenv)->NewObject(jenv, qam_stat_class,
184 __dbj_fill_qam_stat(jenv, $result,
185 (DB_QUEUE_STAT *)$1);
188 /* That's all the database types we're aware of! */
190 __dbj_throw(jenv, EINVAL, "Db.stat only implemented for"
191 " BTREE, HASH, QUEUE and RECNO", NULL, DB2JDBENV);
195 __os_ufree(db->env, $1);