1 /* ldbmcache.c - maintain a cache of open bdb2 files */
14 #ifdef HAVE_SYS_PARAM_H
15 #include <sys/param.h>
18 #include "ldap_defaults.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:
36 case SLAP_TOOLID_MODE:
38 struct ldbminfo *li = (struct ldbminfo *) be->be_private;
42 sprintf( buf, "%s%s", name, suffix );
43 return( bdb2i_get_db_file_cache( li, buf ));
49 /* if not SERVER or TOOL, who else would ask?
50 NO ONE, so return error */
52 Debug( LDAP_DEBUG_ANY,
53 "bdb2i_cache_open: database user (%d) unknown -- cannot open \"%s%s\".\n",
54 slapMode, name, suffix );
60 bdb2i_cache_close( BackendDB *be, struct dbcache *db )
62 /* all files stay open until SERVER or TOOL shut down */
65 case SLAP_SERVER_MODE:
66 case SLAP_TIMEDSERVER_MODE:
68 case SLAP_TOOLID_MODE:
72 /* if unknown user, complain */
73 Debug( LDAP_DEBUG_ANY,
74 "bdb2i_cache_close: database user (%d) unknown -- ignored.\n",
81 bdb2i_cache_really_close( BackendDB *be, struct dbcache *db )
83 /* all files stay open until SERVER or TOOL shut down */
86 case SLAP_SERVER_MODE:
87 case SLAP_TIMEDSERVER_MODE:
89 case SLAP_TOOLID_MODE:
93 /* if unknown user, complain */
94 Debug( LDAP_DEBUG_ANY,
95 "bdb2i_cache_really_close: database user (%d) unknown -- ignored.\n",
102 bdb2i_cache_flush_all( BackendDB *be )
104 /* if SERVER or TOOL, syncing is done by TP, or during shutdown */
105 switch ( slapMode ) {
107 case SLAP_SERVER_MODE:
108 case SLAP_TIMEDSERVER_MODE:
110 case SLAP_TOOLID_MODE:
114 /* if unknown user, complain */
115 Debug( LDAP_DEBUG_ANY,
116 "bdb2i_cache_flush_all: database user (%d) unknown -- ignored.\n",
130 ldbm_datum_init( data );
132 data = bdb2i_db_fetch( db->dbc_db, key );
146 struct timeval time1;
149 Statslog( LDAP_DEBUG_STATS,
150 "=> bdb2i_cache_store(): key.dptr=%s, key.dsize=%d\n",
151 key.dptr, key.dsize, 0, 0, 0 );
153 Statslog( LDAP_DEBUG_STATS,
154 "=> bdb2i_cache_store(): key.dptr=0x%08x, data.dptr=0x%0 8x\n",
155 key.dptr, data.dptr, 0, 0, 0 );
157 Statslog( LDAP_DEBUG_STATS,
158 "=> bdb2i_cache_store(): data.dptr=%s, data.dsize=%d\n",
159 data.dptr, data.dsize, 0, 0, 0 );
161 Statslog( LDAP_DEBUG_STATS,
162 "=> bdb2i_cache_store(): flags=0x%08x\n",
164 #endif /* LDBM_DEBUG */
166 if ( slapMode == SLAP_TIMEDSERVER_MODE )
167 bdb2i_uncond_start_timing( &time1 );
169 rc = bdb2i_db_store( db->dbc_db, key, data, flags );
171 if ( slapMode == SLAP_TIMEDSERVER_MODE ) {
176 if ( !( strcasecmp( db->dbc_name, "dn.bdb2" )))
177 sprintf( buf2, " [%s]", key.dptr );
178 sprintf( buf, "ADD-BDB2( %s%s )", db->dbc_name, buf2 );
179 bdb2i_uncond_stop_timing( time1, buf,
180 NULL, NULL, LDAP_DEBUG_TRACE );
194 rc = bdb2i_db_delete( db->dbc_db, key );