Slapi_Backend * slapi_be_new( const char *type, const char *name, int isprivate, int logchanges ) { Slapi_Backend *be; int i; /* should add some locking here to prevent concurrent access */ if ( nbackends == maxbackends ) { int oldsize = maxbackends; maxbackends += BACKEND_GRAB_SIZE; backends = (Slapi_Backend **) slapi_ch_realloc( (char *) backends, maxbackends * sizeof(Slapi_Backend *) ); memset( &backends[oldsize], '\0', BACKEND_GRAB_SIZE * sizeof(Slapi_Backend *) ); } for (i=0; ((i<maxbackends) && (backends[i])); i++) ; PR_ASSERT(i<maxbackends); be = (Slapi_Backend *) slapi_ch_calloc(1, sizeof(Slapi_Backend)); be->be_lock = slapi_new_rwlock(); be_init( be, type, name, isprivate, logchanges, defsize, deftime ); backends[i] = be; nbackends++; slapi_log_err(SLAPI_LOG_TRACE, "slapi_be_new", "Added new backend name [%s] type [%s] nbackends [%d]\n", name, type, nbackends); return( be ); }
int main(char *argv[], int argc) { /* Initialize backends */ be_init(); /* Pass data to back end functions, and run them */ be_run("data1 is here", "data2 is also here", evl_callback); printf("\nclean up..."); be_cleanup(); printf("done.\n"); return 0; }
int db_init(int db) { void* rv=NULL; error(200,"db_init %i\n",db); switch(db) { case DB_DISK: { /* Should we actually do something here? */ return db_disk_init(); } case DB_OLD: { conf->mdc_in = init_db_attrs((conf->db_in_url)->type); rv=be_init(1,conf->db_in_url,0); if(rv==NULL) { error(200,_("db_in is null\n")); return RETFAIL; } conf->db_in=rv; error(200,_("db_in is nonnull\n")); return RETOK; } case DB_WRITE: { #ifdef WITH_ZLIB conf->mdc_out = init_db_attrs((conf->db_out_url)->type); if(conf->gzip_dbout){ rv=be_init(0,conf->db_out_url,conf->gzip_dbout); conf->db_gzout=rv; } else{ #endif rv=be_init(0,conf->db_out_url,0); conf->db_out=rv; #ifdef WITH_ZLIB } #endif if(rv==NULL){ error(200,_("db_out is null\n")); return RETFAIL; } error(200,_("db_out is nonnull %s\n"),conf->db_out_url->value); return RETOK; } case DB_NEW: { conf->mdc_out = init_db_attrs((conf->db_new_url)->type); rv=be_init(1,conf->db_new_url,0); if(rv==NULL) { error(200,_("db_new is null\n")); return RETFAIL; } conf->db_new=rv; error(200,_("db_new is nonnull\n")); return RETOK; } } return RETFAIL; }