• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ db_create函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中db_create函数的典型用法代码示例。如果您正苦于以下问题:C++ db_create函数的具体用法?C++ db_create怎么用?C++ db_create使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了db_create函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: open_db

/* Open a Berkeley DB database */
int
open_db(DB **dbpp, const char *progname, const char *file_name,
        DB_ENV *envp, u_int32_t extra_flags)
{
    int ret;
    u_int32_t open_flags;
    DB *dbp;

    /* Initialize the DB handle */
    ret = db_create(&dbp, envp, 0);
    if (ret != 0) {
        fprintf(stderr, "%s: %s\n", progname,
                db_strerror(ret));
        return (EXIT_FAILURE);
    }

    /* Point to the memory malloc'd by db_create() */
    *dbpp = dbp;

    if (extra_flags != 0) {
        ret = dbp->set_flags(dbp, extra_flags);
        if (ret != 0) {
            dbp->err(dbp, ret,
                     "open_db: Attempt to set extra flags failed.");
            return (EXIT_FAILURE);
        }
    }

    /* Now open the database */
    open_flags = DB_CREATE              | /* Allow database creation */
                 DB_READ_UNCOMMITTED    | /* Allow dirty reads */
                 DB_AUTO_COMMIT         | /* Allow autocommit */
                 DB_THREAD;   /* Cause the database to be free-threaded */

    ret = dbp->open(dbp,        /* Pointer to the database */
                    NULL,       /* Txn pointer */
                    file_name,  /* File name */
                    NULL,       /* Logical db name */
                    DB_BTREE,   /* Database type (using btree) */
                    open_flags, /* Open flags */
                    0);         /* File mode. Using defaults */
    if (ret != 0) {
        dbp->err(dbp, ret, "Database '%s' open failed",
                 file_name);
        return (EXIT_FAILURE);
    }
    return (EXIT_SUCCESS);
}
开发者ID:balagopalraj,项目名称:clearlinux,代码行数:49,代码来源:txn_guide.c


示例2: openDB

int openDB(DB **dbp, char *num )
{
	int ret = 0;	 
	if ( (ret = db_create(dbp,NULL,0)) != 0 )
        {
                printf("create the database failed!\n");
                exit(1);
        }
        if ( (ret = (*dbp)->open(*dbp,NULL,DATABASE,NULL,DB_BTREE,DB_CREATE,atoi(num))) != 0 )
        {
                (*dbp)->err(*dbp,ret,"$s",DATABASE);
                exit(1);
        }
	return 0;

}
开发者ID:xunmengdeganjue,项目名称:smartrouter,代码行数:16,代码来源:readwriteDB.c


示例3: init_db

local int init_db(int write)
{
    int err;
    if ((err = db_env_create(&dbenv, 0)))
    {
        fprintf(stderr, "db_env_create: %s\n", db_strerror(err));
        return -1;
    }
    if ((err = dbenv->open(
                   dbenv,
                   ASSS_DB_HOME,
                   DB_INIT_CDB | DB_INIT_MPOOL,
                   0644)))
    {
        fprintf(stderr, "dbenv->open: %s\n", db_strerror(err));
        goto close_env;
    }
    if ((err = db_create(&db, dbenv, 0)))
    {
        fprintf(stderr, "db_create: %s\n", db_strerror(err));
        goto close_env;
    }
    if ((err = db->open(
                   db,
#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
                   /* they added a transaction parameter to the db->open
                    * call in 4.1.0. */
                   NULL,
#endif
                   ASSS_DB_FILENAME,
                   NULL,
                   DB_BTREE,
                   (args.needwrite ? 0 : DB_RDONLY),
                   0644)))
    {
        fprintf(stderr, "db->open: %s\n", db_strerror(err));
        goto close_db;
    }

    return 0;

close_db:
    db->close(db, 0);
close_env:
    dbenv->close(dbenv, 0);
    return -1;
}
开发者ID:Ceiu,项目名称:hyperspace-asss,代码行数:47,代码来源:dbtool.c


示例4: dInsert_CONDResult

int dInsert_CONDResult(char* szAlm, char* szMsg, int dLen, unsigned char ucTAMID, unsigned char ucTAFID)
{
	int		   dRet;
	char       szIQuery[1024], szCQuery[1024];
	st_almsts *palm;

	//memset( szIQuery, 0x00, 1024 );
	//memset( szCQuery, 0x00, 1024 );

	palm     = (st_almsts*)szAlm;
	getInsertQuery(szIQuery, szAlm, szMsg, ucTAMID, ucTAFID);

	if( (dRet = db_insert(&stMySQL, szIQuery)) < 0 ){
		switch( db_errno(&stMySQL) ){
			case E_DB_NOT_CONNECT:
				log_print(LOGN_WARN, LH"FAILED IN connect DB",LT);
				break;
			case E_DB_TABLE_NOT_EXIST:
				getCreateQuery(szCQuery);
				if( (dRet = db_create(&stMySQL, szCQuery)) == 0 ){
					if( (dRet = db_insert(&stMySQL, szIQuery)) < 0 ){
						log_print(LOGN_CRI, LH"ERROR IN db_insert(SYS_COND_MSG), dRet=%d\nQuery=%s",
							LT, dRet,szIQuery);
						return dRet;
					}
					log_print(LOGN_CRI, LH"SUCCESS IN db_created(SYS_COND_MSG)",LT);
				}
				log_print(LOGN_CRI, LH"ERROR IN db_create(SYS_COND_MSG), dRet=%d",
					LT, dRet);
				break;
			case E_DB_DUPLICATED_ENTRY:
				log_print(LOGN_WARN, LH"FAILED IN db_insert(DUPLICATED)",LT);
				vErrPrint(szAlm, szMsg, ucTAMID, ucTAFID);
				return 0;
				break;
			default:
				log_print(LOGN_CRI, LH"FAILED IN db_insert(), dRet=%d", LT, dRet);
				vErrPrint(szAlm, szMsg, ucTAMID, ucTAFID);
				break;
			
		}
		return dRet;
	}

	log_print(LOGN_DEBUG,"SUCCESS INSERT COND MSG TO DB\nQuery=%s",szIQuery);
	return 0;
}
开发者ID:lanian09,项目名称:mysource,代码行数:47,代码来源:cond_db.c


示例5: DeletePersistentClass

void
DeletePersistentClass(char *name)
{
    int errno;
    DBT key,value;
    DB *dbp;
    struct CfState state;
    time_t now = time(NULL),expires;
    char filename[CF_BUFSIZE];

    snprintf(filename,CF_BUFSIZE,"%s/%s",g_vlockdir,CF_STATEDB_FILE);

    if ((errno = db_create(&dbp,NULL,0)) != 0) {
        snprintf(g_output, CF_BUFSIZE,
                "Couldn't open average database %s\n", filename);
        CfLog(cferror,g_output,"db_open");
        return;
    }

#ifdef CF_OLD_DB
    if ((errno = dbp->open(dbp,filename,NULL,DB_BTREE,
                    DB_CREATE,0644)) != 0)
#else
    if ((errno = dbp->open(dbp,NULL,filename,NULL,DB_BTREE,
                    DB_CREATE,0644)) != 0)
#endif
    {
    snprintf(g_output,CF_BUFSIZE,"Couldn't open average database %s\n",filename);
    CfLog(cferror,g_output,"db_open");
    return;
    }

    chmod(filename,0644);

    memset(&key,0,sizeof(key));
    memset(&value,0,sizeof(value));

    key.data = name;
    key.size = strlen(name)+1;

    if ((errno = dbp->del(dbp,NULL,&key,0)) != 0) {
        CfLog(cferror,"","db_store");
    }

    Debug("Deleted persistent state %s if found\n",name);
    dbp->close(dbp,0);
}
开发者ID:kbarber,项目名称:cfng,代码行数:47,代码来源:state.c


示例6: bdb_db_open

void bdb_db_open(void) {
    int ret;
    int db_open = 0;
    /* for replicas to get a full master copy, then open db */
    while(!db_open) {
        /* if replica, just scratch the db file from a master */
        if (1 == bdb_settings.is_replicated) {
            if (MDB_CLIENT == bdb_settings.rep_whoami) {
                bdb_settings.db_flags = DB_AUTO_COMMIT;
            } else if (MDB_MASTER == bdb_settings.rep_whoami) {
                bdb_settings.db_flags = DB_CREATE | DB_AUTO_COMMIT;
            } else {
                /* do nothing */
            }
        }

        bdb_db_close();

        if ((ret = db_create(&dbp, env, 0)) != 0) {
            fprintf(stderr, "db_create: %s\n", db_strerror(ret));
            exit(EXIT_FAILURE);
        }
        /* set page size */
        if((ret = dbp->set_pagesize(dbp, bdb_settings.page_size)) != 0) {
            fprintf(stderr, "dbp->set_pagesize: %s\n", db_strerror(ret));
            exit(EXIT_FAILURE);
        }

        /* try to open db*/
        ret = dbp->open(dbp, NULL, bdb_settings.db_file, NULL, bdb_settings.db_type, bdb_settings.db_flags, 0664);
        switch (ret) {
        case 0:
            db_open = 1;
            break;
        case ENOENT:
        case DB_LOCK_DEADLOCK:
        case DB_REP_LOCKOUT:
            fprintf(stderr, "db_open: %s\n", db_strerror(ret));
            sleep(3);
            break;
        default:
            fprintf(stderr, "db_open: %s\n", db_strerror(ret));
            exit(EXIT_FAILURE);
        }
    }

}
开发者ID:Mons,项目名称:memcachedb,代码行数:47,代码来源:bdb.c


示例7: init_experiment

int init_experiment(char *store_name)
{
	unsigned long env_flags, open_flags;;
	int rval;

	env_flags = DB_CREATE|DB_INIT_MPOOL;
	if (log_flag == 1) {
		env_flags |= DB_RECOVER|DB_INIT_TXN|DB_INIT_LOG;
	}
	//env_flags |=  DB_THREAD|DB_INIT_LOCK;

	if (db_env_create(&db_env, 0) != 0) {
		printf("[BDB] db_env_create() fail!\n");
		return 0;
	}
	
	//rval = envp->set_lk_detect(db_env, DB_LOCK_MINWRITE);
	//rval = envp->set_lk_max_locks(db_env, 10000);
	//rval = envp->set_lk_max_objects(db_env, 10000);
	val = db_env->set_cachesize(db_env, 0, 1024*1024*1024, 1);	// 0G + 1024M
	if (db_env->open(db_env, DB_DIRECTORY, env_flags, 0) != 0) {
		printf("[BDB] db_env->open() fail!\n");
		db_env->close(db_env, 0);
		return 0;
	}

	if(db_create(&db, db_env, 0) != 0) {
		printf("[BDB] db_create() fail!\n");
		return 0;
	}
	
	open_flags = DB_CREATE;
	if (log_flag == 1) {
		open_flags |= DB_AUTO_COMMIT;
	}
	if (kv_type == BTREE) {
		rval = db->open(db, NULL, store_name, NULL, DB_BTREE, open_flags, 0);
	} else if (kv_type == HASH) {
		rval = db->open(db, NULL, store_name, NULL, DB_HASH, open_flags, 0);
	}
	if (rval != 0) {
		printf("[BDB] db->open() fail!\n");
		return 0;
	}
	
	return 1;
}
开发者ID:matureelf,项目名称:heapo_gc,代码行数:47,代码来源:main_bdb.c


示例8: main

int main() {
	size_t i;
	obj *op;
	db* db = db_create(16);
	cstr k = cstr_new("1", 1);	
	obj* obj = cstr_obj_create("2");
	db_set(db, 0, k, obj);
	for(i = 0; i < 1; i++) {
		op = db_get(db, 0, k);
		obj_decr(op);
		op = db_get(db, 0, k);
		obj_decr(op);
		op = db_get(db, 0, k);
		obj_decr(op);
	}
	return 0;
}
开发者ID:Joinhack,项目名称:chat,代码行数:17,代码来源:db_test.c


示例9: scanscan_setup

static void scanscan_setup (void) {
    int r;
    r = db_env_create(&env, 0);                                                           assert(r==0);
    r = env->set_cachesize(env, 0, cachesize, 1);                                         assert(r==0);
    r = env->open(env, dbdir, do_txns? env_open_flags_yesx : env_open_flags_nox, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);   assert(r==0);
    r = db_create(&db, env, 0);                                                           assert(r==0);
    if (do_txns) {
        r = env->txn_begin(env, 0, &tid, 0);                                              assert(r==0);
    }
    r = db->open(db, tid, dbfilename, NULL, DB_BTREE, 0, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);                           assert(r==0);
#ifdef TOKUDB
    if (prelock) {
        r = db->pre_acquire_table_lock(db, tid);
        assert(r==0);
    }
#endif
}
开发者ID:Lucky7Studio,项目名称:ft-index,代码行数:17,代码来源:db-scan.c


示例10: prepare_db

static int
prepare_db()
{
    int rc;
    rc = db_create(&db, dbenv, 0);
    if (rc)
        log_db_error("db_create", rc);
    else {
        rc = db_open(db, DB_FILE_NAME, NULL, DB_BTREE, DB_CREATE, 0644);
        if (rc) {
            log_db_error("db->open", rc);
            db->close(db, 0);
            db = 0;
        }
    }
    return rc;
}
开发者ID:fauno,项目名称:Cryptolisting,代码行数:17,代码来源:cryptolist.c


示例11: initialize_db

db* initialize_db(const char* db_name, uint32_t flag){
    db* db_ptr = NULL;
    DB* b_db;
    DB_ENV* dbenv;
    int ret;
    char* full_path = NULL;
    if((ret = mkdir(db_dir,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)) != 0){
        if(errno!=EEXIST){
            con_err_log("DB : Dir Creation Failed\n");
            goto db_init_return;
        }
    }
    full_path = (char*)malloc(strlen(db_dir) + strlen(db_name) + 2);
    mk_path(full_path, db_dir, db_name);
    if ((ret = db_env_create(&dbenv, 0)) != 0) {
        dbenv->err(dbenv, ret, "Environment Created: %s", db_dir);
        goto db_init_return;
    }
    if ((ret = dbenv->open(dbenv, db_dir, DB_CREATE|DB_INIT_CDB|DB_INIT_MPOOL|DB_THREAD, 0)) != 0) {
        //dbenv->err(dbenv, ret, "Environment Open: %s", db_dir);
        goto db_init_return;
    }
    /* Initialize the DB handle */
    if((ret = db_create(&b_db,dbenv,flag)) != 0){
        con_err_log("DB : %s.\n", db_strerror(ret));
        goto db_init_return;
    }

    if((ret = b_db->open(b_db, NULL, db_name, NULL, DB_BTREE, DB_THREAD|DB_CREATE,0)) != 0){
        //b_db->err(b_db,ret,"%s","test.db");
        goto db_init_return;
    }
    db_ptr = (db*)(malloc(sizeof(db)));
    db_ptr->bdb_ptr = b_db;

db_init_return:
    if(full_path != NULL){
        free(full_path);
    }
    if(db_ptr != NULL){
        ;
    }
    return db_ptr;
}
开发者ID:apsys16-p10,项目名称:falcon,代码行数:44,代码来源:db-interface.c


示例12: db_init

static int db_init(DB_ENV *dbenv, DB **dbp)
{
	int ret;

	/* Initialize the database. */
	if((ret = db_create(dbp, dbenv, 0)) != 0)
	{
		dbenv->err(dbenv, ret, "db_create");
		(void)dbenv->close(dbenv, 0);
		return 1;
	}

	if((ret = (*dbp)->set_re_len(*dbp, REC_SIZE)) != 0)
	{
		(*dbp)->err(*dbp, ret, "set_re_source");
		goto err;
	}

	if((ret = (*dbp)->set_q_extentsize(*dbp, 1000)) != 0)
	{
		(*dbp)->err(*dbp, ret, "set_q_extentsize");
		goto err;
	}

	#if USE_TXN
	if((ret = (*dbp)->open(*dbp, NULL, DATABASE, NULL, DB_QUEUE,
					DB_AUTO_COMMIT | DB_CREATE | DB_THREAD, 0664)) != 0)
	#else
	if((ret = (*dbp)->open(*dbp, NULL, DATABASE, NULL, DB_QUEUE,
								DB_CREATE | DB_THREAD, 0664)) != 0)
	#endif
	{
		(*dbp)->err(*dbp, ret, "%s: open", DATABASE);
		goto err;
	}

	return 0;

err:
	(void)(*dbp)->close(*dbp, 0);
	(void)dbenv->close(dbenv, 0);

	return 1;
}
开发者ID:AkankshaGovil,项目名称:Automation,代码行数:44,代码来源:radacct_db.c


示例13: sess_db_open

static int
sess_db_open (void)
{
    uint32_t flags;
    int      rc;

    rc = db_create(&sess_db, NULL, 0);
    if (rc) {
        ERR("db_create(): %s %d\n", db_strerror(rc), rc);
        return (-1);
    }
    flags = DB_CREATE;
    rc = sess_db->open(sess_db, NULL, "sessions.db", NULL, DB_BTREE, flags, 0);
    if (rc) {
        ERR("db_open(): %s (%d)\n", db_strerror(rc), rc);
        return (-1);
    }
    return (0);
}
开发者ID:pombredanne,项目名称:spiz,代码行数:19,代码来源:session.c


示例14: main

int
main(int argc, char **argv)
{
	int ret;

	if (argc < 2)
		errx(1, "Usage: ./prog command");

	if ((ret = db_create(&maindb, NULL, 0)) != 0) {
		err(1, "db_create: %s\n", db_strerror(ret));
	}

	if ((ret = maindb->set_cachesize(maindb, 0, dbCashe, dbCasheBlokes)) != 0) {
		maindb->err(maindb, ret, "set_cachesize");
	}


	if ((ret = maindb->open(maindb, NULL, THEDB, NULL, DB_BTREE, DB_RDONLY, 0664)) != 0) {
		maindb->err(maindb, ret, "%s", "db/maindb");
		exit(1);
	}

	if (strcmp(argv[1], "distinct") == 0) {
		int cutoff = 10;

		if (argc >= 3)
			cutoff = atoi(argv[2]);
		print_distinct(cutoff);
	} else if (strcmp(argv[1], "all") == 0) {
		print_all();
	} else if (strcmp(argv[1], "list") == 0) {
		printf("Commands:\n\n");
		printf("distinct [cutoff]\n");
	}



	if (maindb->close(maindb, 0) != 0)
		return 1;

	
	return 0;
}
开发者ID:FlavioFalcao,项目名称:enterprise-search,代码行数:43,代码来源:query.c


示例15: open_table

int open_table (void **db, char *table) {
    int ret;
    DB *dbp = NULL;

    if ((ret = db_create(&dbp, NULL, 0)) != 0) {
        fprintf(stderr, "db_create: %s\n", db_strerror(ret));
        exit (1);
    }

    if ((ret = dbp->open(
      dbp, NULL, table, NULL, DB_BTREE, DB_CREATE, 0)) != 0) {
        dbp->err(dbp, ret, "%s", table);
        exit (1);
    }

    *db = dbp;

    return ES_OK;
}
开发者ID:whitehse,项目名称:anthidium,代码行数:19,代码来源:eosimias_bdb.c


示例16: bdb_create

static isc_result_t
bdb_create(const char *zone, int argc, char **argv,
	   void *unused, void **dbdata)
{
	int ret;

	UNUSED(zone);
	UNUSED(unused);

	if (argc < 1)
		return ISC_R_FAILURE;	/* database path must be given */

	if (db_create((DB **)dbdata, NULL, 0) != 0) {
		/*
		 * XXX Should use dns_msgcat et al
		 * but seems to be unavailable.
		 */
		isc_log_iwrite(dns_lctx, DNS_LOGCATEGORY_DATABASE,
			       DNS_LOGMODULE_SDB, ISC_LOG_CRITICAL, isc_msgcat,
			       ISC_MSGSET_GENERAL, ISC_MSG_FATALERROR,
			       "db_create");
		return ISC_R_FAILURE;
	}

	if (isc_file_exists(*argv) != ISC_TRUE) {
		isc_log_iwrite(dns_lctx, DNS_LOGCATEGORY_DATABASE,
			       DNS_LOGMODULE_SDB, ISC_LOG_CRITICAL, isc_msgcat,
			       ISC_MSGSET_GENERAL, ISC_MSG_FATALERROR,
			       "isc_file_exists: %s", *argv);
		return ISC_R_FAILURE;
	}

	if ((ret = (*(DB **)dbdata)->open(*(DB **)dbdata, *argv, NULL, DB_HASH,
	    DB_RDONLY, 0)) != 0) {
			isc_log_iwrite(dns_lctx, DNS_LOGCATEGORY_DATABASE,
				       DNS_LOGMODULE_SDB, ISC_LOG_CRITICAL,
				       isc_msgcat, ISC_MSGSET_GENERAL,
				       ISC_MSG_FATALERROR, "DB->open: %s",
				       db_strerror(ret));
			return ISC_R_FAILURE;
	}
	return ISC_R_SUCCESS;
}
开发者ID:w796933,项目名称:bind99damp,代码行数:43,代码来源:bdb.c


示例17: abort

DB *icalbdbset_bdb_open(const char *path, const char *subdb, int dbtype, int mode, u_int32_t flag)
{
    DB *dbp = NULL;
    int ret;
    u_int32_t flags;

    /* Initialize the correct set of db subsystems (see capdb.c) */
    flags = (u_int32_t) (DB_CREATE | DB_THREAD);

    /* should just abort here instead of opening an env in the current dir..  */
    if (!ICAL_DB_ENV) {
        if (icalbdbset_init_dbenv(NULL, NULL) != 0) {
            return NULL;
        }
    }

    /* Create and initialize database object, open the database. */
    if ((ret = db_create(&dbp, ICAL_DB_ENV, 0)) != 0) {
        return NULL;
    }

    /* set comparison function, if BTREE */
    if (dbtype == DB_BTREE) {
        dbp->set_bt_compare(dbp, _compare_keys);
    }

    /* set DUP, DUPSORT */
    if (flag != 0) {
        dbp->set_flags(dbp, flag);
    }

    if ((ret = dbp->open(dbp, NULL, path, subdb, dbtype, flags, mode)) != 0) {
        ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "%s (database: %s): open failed.", path, subdb);
        if (ret == DB_RUNRECOVERY) {
            abort();
        } else {
            return NULL;
        }
    }

    return dbp;
}
开发者ID:BenjamenMeyer,项目名称:libical,代码行数:42,代码来源:icalbdbset.c


示例18: db_create

Berkley::Berkley(std::string dbName)
{
	//dataFile = new std::string(dbName, 0, sizeof(dbName));
	
	dataFile = dbName;
	
	// creates the database object
	ret = db_create(&db, env, 0);
	if (ret != 0) 
	{
		fprintf(stderr, "db_create: %s\n", db_strerror(ret));
	}

	// If database doesn't exist, create it 
	ret = db->open(db, NULL, dbName.c_str(), NULL, DB_HASH, DB_CREATE, 0664); 
	
	// std::cout << "Created DB: " << dataFile << std::endl;
	
	dbCount++;
}
开发者ID:wyattjoh,项目名称:Berkley,代码行数:20,代码来源:Berkley.cpp


示例19: open_database

static int
open_database(DB_ENV *env, DB **dbp, const char *name)
{
	int e;
	DB *db;

	e = db_create(dbp, env, 0);
	if (e) {
		log_error("Cannot create database, %s\n", db_strerror(e));
		*dbp = NULL;
		return -1;
	}
	db = *dbp;
	e = db->open(db, NULL, name, NULL, DB_BTREE, DB_CREATE, 0);
	if (e) {
		log_error("Cannot open database, %s\n", db_strerror(e));
		return -2;
	}
	return 0;
}
开发者ID:Tayyib,项目名称:uludag,代码行数:20,代码来源:data.c


示例20: _bdb_reslist_get_connection

static apr_status_t _bdb_reslist_get_connection(void **conn_, void *params, apr_pool_t *pool) {
   int ret;
   mapcache_cache_bdb *cache = (mapcache_cache_bdb*)params;
   char *dbfile = apr_pstrcat(pool,cache->basedir,"/",cache->cache.name,".db",NULL);
   struct bdb_env *benv = apr_pcalloc(pool,sizeof(struct bdb_env));

   ret = db_env_create(&benv->env, 0);
   if(ret) { 
      cache->ctx->set_error(cache->ctx,500,"bdb cache failure for db_env_create: %s", db_strerror(ret));
      return APR_EGENERAL;
   }
   ret = benv->env->set_cachesize(benv->env,0,CACHESIZE,1); /* set a larger cache size than default */
   if(ret) { 
      cache->ctx->set_error(cache->ctx,500,"bdb cache failure for db->set_cachesize: %s", db_strerror(ret));
      return APR_EGENERAL;
   }
   int env_flags = DB_INIT_CDB|DB_INIT_MPOOL|DB_CREATE;
   ret = benv->env->open(benv->env,cache->basedir,env_flags,0);
   if(ret) { 
      cache->ctx->set_error(cache->ctx,500,"bdb cache failure for env->open: %s", db_strerror(ret));
      return APR_EGENERAL;
   }

   if ((ret = db_create(&benv->db, benv->env, 0)) != 0) {
      cache->ctx->set_error(cache->ctx,500,"bdb cache failure for db_create: %s", db_strerror(ret));
      return APR_EGENERAL;
   }
   int mode = DB_BTREE;
   ret = benv->db->set_pagesize(benv->db,PAGESIZE); /* set pagesize to maximum allowed, as tile data is usually pretty large */
   if(ret) { 
      cache->ctx->set_error(cache->ctx,500,"bdb cache failure for db->set_pagesize: %s", db_strerror(ret));
      return APR_EGENERAL;
   }

   if ((ret = benv->db->open(benv->db, NULL, dbfile, NULL, mode, DB_CREATE, 0664)) != 0) {
      cache->ctx->set_error(cache->ctx,500,"bdb cache failure 1 for db->open: %s", db_strerror(ret));
      return APR_EGENERAL;
   }
   *conn_ = benv;
   return APR_SUCCESS;
}
开发者ID:ophidian,项目名称:mapcache,代码行数:41,代码来源:cache_bdb.c



注:本文中的db_create函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ db_data2ptr函数代码示例发布时间:2022-05-30
下一篇:
C++ db_connect函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap