@ -55,7 +55,7 @@ void CDBEnv::Close()
EnvShutdown ( ) ;
EnvShutdown ( ) ;
}
}
bool CDBEnv : : Open ( boost : : filesystem : : path pathEnv_ )
bool CDBEnv : : Open ( const boost : : filesystem : : path & path )
{
{
if ( fDbEnvInit )
if ( fDbEnvInit )
return true ;
return true ;
@ -63,18 +63,16 @@ bool CDBEnv::Open(boost::filesystem::path pathEnv_)
if ( fShutdown )
if ( fShutdown )
return false ;
return false ;
pathEnv = pathEnv_ ;
filesystem : : path pathLogDir = path / " database " ;
filesystem : : path pathDataDir = pathEnv ;
filesystem : : path pathLogDir = pathDataDir / " database " ;
filesystem : : create_directory ( pathLogDir ) ;
filesystem : : create_directory ( pathLogDir ) ;
filesystem : : path pathErrorFile = pathDataDir / " db.log " ;
filesystem : : path pathErrorFile = path / " db.log " ;
printf ( " dbenv.open LogDir=%s ErrorFile=%s \n " , pathLogDir . string ( ) . c_str ( ) , pathErrorFile . string ( ) . c_str ( ) ) ;
printf ( " dbenv.open LogDir=%s ErrorFile=%s \n " , pathLogDir . string ( ) . c_str ( ) , pathErrorFile . string ( ) . c_str ( ) ) ;
unsigned int nEnvFlags = 0 ;
unsigned int nEnvFlags = 0 ;
if ( GetBoolArg ( " -privdb " , true ) )
if ( GetBoolArg ( " -privdb " , true ) )
nEnvFlags | = DB_PRIVATE ;
nEnvFlags | = DB_PRIVATE ;
int nDbCache = GetArg ( " -dbcache " , 25 ) ;
unsigned int nDbCache = GetArg ( " -dbcache " , 25 ) ;
dbenv . set_lg_dir ( pathLogDir . string ( ) . c_str ( ) ) ;
dbenv . set_lg_dir ( pathLogDir . string ( ) . c_str ( ) ) ;
dbenv . set_cachesize ( nDbCache / 1024 , ( nDbCache % 1024 ) * 1048576 , 1 ) ;
dbenv . set_cachesize ( nDbCache / 1024 , ( nDbCache % 1024 ) * 1048576 , 1 ) ;
dbenv . set_lg_bsize ( 1048576 ) ;
dbenv . set_lg_bsize ( 1048576 ) ;
@ -85,7 +83,7 @@ bool CDBEnv::Open(boost::filesystem::path pathEnv_)
dbenv . set_flags ( DB_AUTO_COMMIT , 1 ) ;
dbenv . set_flags ( DB_AUTO_COMMIT , 1 ) ;
dbenv . set_flags ( DB_TXN_WRITE_NOSYNC , 1 ) ;
dbenv . set_flags ( DB_TXN_WRITE_NOSYNC , 1 ) ;
dbenv . log_set_config ( DB_LOG_AUTO_REMOVE , 1 ) ;
dbenv . log_set_config ( DB_LOG_AUTO_REMOVE , 1 ) ;
int ret = dbenv . open ( pathDataDir . string ( ) . c_str ( ) ,
int ret = dbenv . open ( path . string ( ) . c_str ( ) ,
DB_CREATE |
DB_CREATE |
DB_INIT_LOCK |
DB_INIT_LOCK |
DB_INIT_LOG |
DB_INIT_LOG |