1 /* ldbmcache.c - maintain a cache of open bdb2 files */
10 #include <ac/string.h>
15 #ifdef HAVE_SYS_PARAM_H
16 #include <sys/param.h>
20 #include "back-bdb2.h"
30 /* all files are open, so return handle from file cache */
31 switch ( slapMode & SLAP_MODE ) {
33 case SLAP_SERVER_MODE:
36 struct ldbminfo *li = (struct ldbminfo *) be->be_private;
40 sprintf( buf, "%s%s", name, suffix );
41 return( bdb2i_get_db_file_cache( li, buf ));
47 /* if not SERVER or TOOL, who else would ask?
48 NO ONE, so return error */
50 Debug( LDAP_DEBUG_ANY,
51 "bdb2i_cache_open: database user (%d) unknown -- cannot open \"%s%s\".\n",
52 slapMode, name, suffix );
58 bdb2i_cache_close( BackendDB *be, struct dbcache *db )
60 /* all files stay open until SERVER or TOOL shut down */
61 switch ( slapMode & SLAP_MODE ) {
62 case SLAP_SERVER_MODE:
67 /* if unknown user, complain */
68 Debug( LDAP_DEBUG_ANY,
69 "bdb2i_cache_close: database user (%d) unknown -- ignored.\n",
76 bdb2i_cache_really_close( BackendDB *be, struct dbcache *db )
78 /* all files stay open until SERVER or TOOL shut down */
79 switch ( slapMode & SLAP_MODE ) {
80 case SLAP_SERVER_MODE:
85 /* if unknown user, complain */
86 Debug( LDAP_DEBUG_ANY,
87 "bdb2i_cache_really_close: database user (%d) unknown -- ignored.\n",
94 bdb2i_cache_flush_all( BackendDB *be )
96 /* if SERVER or TOOL, syncing is done by TP, or during shutdown */
97 switch ( slapMode & SLAP_MODE ) {
99 case SLAP_SERVER_MODE:
104 /* if unknown user, complain */
105 Debug( LDAP_DEBUG_ANY,
106 "bdb2i_cache_flush_all: database user (%d) unknown -- ignored.\n",
120 ldbm_datum_init( data );
122 data = bdb2i_db_fetch( db->dbc_db, key );
136 struct timeval time1;
139 Statslog( LDAP_DEBUG_STATS,
140 "=> bdb2i_cache_store(): key.dptr=%s, key.dsize=%d\n",
141 key.dptr, key.dsize, 0, 0, 0 );
143 Statslog( LDAP_DEBUG_STATS,
144 "=> bdb2i_cache_store(): key.dptr=0x%08x, data.dptr=0x%0 8x\n",
145 key.dptr, data.dptr, 0, 0, 0 );
147 Statslog( LDAP_DEBUG_STATS,
148 "=> bdb2i_cache_store(): data.dptr=%s, data.dsize=%d\n",
149 data.dptr, data.dsize, 0, 0, 0 );
151 Statslog( LDAP_DEBUG_STATS,
152 "=> bdb2i_cache_store(): flags=0x%08x\n",
154 #endif /* LDBM_DEBUG */
156 if ( slapMode & SLAP_TIMED_MODE )
157 bdb2i_uncond_start_timing( &time1 );
159 rc = bdb2i_db_store( db->dbc_db, key, data, flags );
161 if ( slapMode & SLAP_TIMED_MODE ) {
166 if ( !( strcasecmp( db->dbc_name, "dn.bdb2" )))
167 sprintf( buf2, " [%s]", key.dptr );
168 sprintf( buf, "ADD-BDB2( %s%s )", db->dbc_name, buf2 );
169 bdb2i_uncond_stop_timing( time1, buf,
170 NULL, NULL, LDAP_DEBUG_TRACE );
184 rc = bdb2i_db_delete( db->dbc_db, key );