const std::string LMDBEngine::Stats() { MDB_stat stat; MDB_txn* txn; int rc = mdb_txn_begin(m_env, NULL, 0, &txn); if (0 == rc) { mdb_stat(txn, m_dbi, &stat); mdb_txn_commit(txn); std::string stat_info; stat_info.append("lmdb version:").append(mdb_version(NULL, NULL, NULL)).append("\r\n"); stat_info.append("db page size:").append(stringfromll(stat.ms_psize)).append("\r\n"); stat_info.append("b-tree depath:").append(stringfromll(stat.ms_depth)).append("\r\n"); stat_info.append("branch pages:").append(stringfromll(stat.ms_branch_pages)).append("\r\n"); stat_info.append("leaf pages:").append(stringfromll(stat.ms_leaf_pages)).append("\r\n"); stat_info.append("overflow oages:").append(stringfromll(stat.ms_overflow_pages)).append("\r\n"); stat_info.append("data items:").append(stringfromll(stat.ms_entries)); return stat_info; } else { return "Failed to get lmdb's stats"; } }
void setupExportMisc(Handle<Object> exports) { Local<Object> versionObj = Nan::New<Object>(); int major, minor, patch; char *str = mdb_version(&major, &minor, &patch); versionObj->Set(Nan::New<String>("versionString").ToLocalChecked(), Nan::New<String>(str).ToLocalChecked()); versionObj->Set(Nan::New<String>("major").ToLocalChecked(), Nan::New<Integer>(major)); versionObj->Set(Nan::New<String>("minor").ToLocalChecked(), Nan::New<Integer>(minor)); versionObj->Set(Nan::New<String>("patch").ToLocalChecked(), Nan::New<Integer>(patch)); exports->Set(Nan::New<String>("version").ToLocalChecked(), versionObj); }
int mdb_back_initialize( BackendInfo *bi ) { int rc; static const char * const controls[] = { LDAP_CONTROL_ASSERT, LDAP_CONTROL_MANAGEDSAIT, LDAP_CONTROL_NOOP, LDAP_CONTROL_PAGEDRESULTS, LDAP_CONTROL_PRE_READ, LDAP_CONTROL_POST_READ, LDAP_CONTROL_SUBENTRIES, LDAP_CONTROL_X_PERMISSIVE_MODIFY, #ifdef LDAP_X_TXN LDAP_CONTROL_X_TXN_SPEC, #endif NULL }; /* initialize the underlying database system */ Debug( LDAP_DEBUG_TRACE, LDAP_XSTRING(mdb_back_initialize) ": initialize " MDB_UCTYPE " backend\n" ); bi->bi_flags |= SLAP_BFLAG_INCREMENT | SLAP_BFLAG_SUBENTRIES | SLAP_BFLAG_ALIASES | SLAP_BFLAG_REFERRALS; bi->bi_controls = controls; { /* version check */ int major, minor, patch, ver; char *version = mdb_version( &major, &minor, &patch ); ver = (major << 24) | (minor << 16) | patch; if( ver != MDB_VERSION_FULL ) { /* fail if a versions don't match */ Debug( LDAP_DEBUG_ANY, LDAP_XSTRING(mdb_back_initialize) ": " "MDB library version mismatch:" " expected " MDB_VERSION_STRING "," " got %s\n", version ); return -1; } Debug( LDAP_DEBUG_TRACE, LDAP_XSTRING(mdb_back_initialize) ": %s\n", version ); } bi->bi_open = 0; bi->bi_close = 0; bi->bi_config = 0; bi->bi_destroy = 0; bi->bi_db_init = mdb_db_init; bi->bi_db_config = config_generic_wrapper; bi->bi_db_open = mdb_db_open; bi->bi_db_close = mdb_db_close; bi->bi_db_destroy = mdb_db_destroy; bi->bi_op_add = mdb_add; bi->bi_op_bind = mdb_bind; bi->bi_op_compare = mdb_compare; bi->bi_op_delete = mdb_delete; bi->bi_op_modify = mdb_modify; bi->bi_op_modrdn = mdb_modrdn; bi->bi_op_search = mdb_search; bi->bi_op_unbind = 0; bi->bi_extended = mdb_extended; bi->bi_chk_referrals = 0; bi->bi_operational = mdb_operational; bi->bi_has_subordinates = mdb_hasSubordinates; bi->bi_entry_release_rw = mdb_entry_release; bi->bi_entry_get_rw = mdb_entry_get; /* * hooks for slap tools */ bi->bi_tool_entry_open = mdb_tool_entry_open; bi->bi_tool_entry_close = mdb_tool_entry_close; bi->bi_tool_entry_first = backend_tool_entry_first; bi->bi_tool_entry_first_x = mdb_tool_entry_first_x; bi->bi_tool_entry_next = mdb_tool_entry_next; bi->bi_tool_entry_get = mdb_tool_entry_get; bi->bi_tool_entry_put = mdb_tool_entry_put; bi->bi_tool_entry_reindex = mdb_tool_entry_reindex; bi->bi_tool_sync = 0; bi->bi_tool_dn2id_get = mdb_tool_dn2id_get; bi->bi_tool_entry_modify = mdb_tool_entry_modify; bi->bi_connection_init = 0; bi->bi_connection_destroy = 0; rc = mdb_back_init_cf( bi ); return rc; }