1 /* ldbmcache.c - maintain a cache of open bdb2 files */
14 #ifdef HAVE_SYS_PARAM_H
15 #include <sys/param.h>
18 #include "ldapconfig.h"
20 #include "back-bdb2.h"
30 /* all files are open, so return handle from file cache */
33 case SLAP_SERVER_MODE:
34 case SLAP_TIMEDSERVER_MODE:
37 struct ldbminfo *li = (struct ldbminfo *) be->be_private;
41 sprintf( buf, "%s%s", name, suffix );
42 return( bdb2i_get_db_file_cache( li, buf ));
48 /* if not SERVER or TOOL, who else would ask?
49 NO ONE, so return error */
51 Debug( LDAP_DEBUG_ANY,
52 "bdb2i_cache_open: database user (%d) unknown -- cannot open \"%s%s\".\n",
53 slapMode, name, suffix );
59 bdb2i_cache_close( BackendDB *be, struct dbcache *db )
61 /* all files stay open until SERVER or TOOL shut down */
64 case SLAP_SERVER_MODE:
65 case SLAP_TIMEDSERVER_MODE:
70 /* if unknown user, complain */
71 Debug( LDAP_DEBUG_ANY,
72 "bdb2i_cache_close: database user (%d) unknown -- ignored.\n",
79 bdb2i_cache_really_close( BackendDB *be, struct dbcache *db )
81 /* all files stay open until SERVER or TOOL shut down */
84 case SLAP_SERVER_MODE:
85 case SLAP_TIMEDSERVER_MODE:
90 /* if unknown user, complain */
91 Debug( LDAP_DEBUG_ANY,
92 "bdb2i_cache_really_close: database user (%d) unknown -- ignored.\n",
99 bdb2i_cache_flush_all( BackendDB *be )
101 /* if SERVER or TOOL, syncing is done by TP, or during shutdown */
102 switch ( slapMode ) {
104 case SLAP_SERVER_MODE:
105 case SLAP_TIMEDSERVER_MODE:
110 /* if unknown user, complain */
111 Debug( LDAP_DEBUG_ANY,
112 "bdb2i_cache_flush_all: database user (%d) unknown -- ignored.\n",
126 ldbm_datum_init( data );
128 data = ldbm_fetch( db->dbc_db, key );
142 struct timeval time1;
145 Statslog( LDAP_DEBUG_STATS,
146 "=> bdb2i_cache_store(): key.dptr=%s, key.dsize=%d\n",
147 key.dptr, key.dsize, 0, 0, 0 );
149 Statslog( LDAP_DEBUG_STATS,
150 "=> bdb2i_cache_store(): key.dptr=0x%08x, data.dptr=0x%0 8x\n",
151 key.dptr, data.dptr, 0, 0, 0 );
153 Statslog( LDAP_DEBUG_STATS,
154 "=> bdb2i_cache_store(): data.dptr=%s, data.dsize=%d\n",
155 data.dptr, data.dsize, 0, 0, 0 );
157 Statslog( LDAP_DEBUG_STATS,
158 "=> bdb2i_cache_store(): flags=0x%08x\n",
160 #endif /* LDBM_DEBUG */
162 if ( slapMode == SLAP_TIMEDSERVER_MODE )
163 bdb2i_uncond_start_timing( &time1 );
165 rc = ldbm_store( db->dbc_db, key, data, flags );
167 if ( slapMode == SLAP_TIMEDSERVER_MODE ) {
172 if ( !( strcasecmp( db->dbc_name, "dn.bdb2" )))
173 sprintf( buf2, " [%s]", key.dptr );
174 sprintf( buf, "ADD-BDB2( %s%s )", db->dbc_name, buf2 );
175 bdb2i_uncond_stop_timing( time1, buf,
176 NULL, NULL, LDAP_DEBUG_TRACE );
190 rc = ldbm_delete( db->dbc_db, key );