@ -95,18 +95,16 @@ public:
LDBCommand ( std : : string & db_name , std : : vector < std : : string > & args ) :
LDBCommand ( std : : string & db_name , std : : vector < std : : string > & args ) :
db_path_ ( db_name ) ,
db_path_ ( db_name ) ,
db_ ( NULL ) {
db_ ( NULL ) {
parse_open_args ( args ) ;
}
}
LDBCommand ( std : : vector < std : : string > & args ) :
LDBCommand ( std : : vector < std : : string > & args ) :
db_path_ ( " " ) ,
db_path_ ( " " ) ,
db_ ( NULL ) {
db_ ( NULL ) {
parse_open_args ( args ) ;
}
}
virtual leveldb : : Options PrepareOptionsForOpenDB ( ) {
virtual leveldb : : Options PrepareOptionsForOpenDB ( ) ;
leveldb : : Options opt ;
opt . create_if_missing = false ;
return opt ;
}
virtual bool NoDBOpen ( ) {
virtual bool NoDBOpen ( ) {
return false ;
return false ;
@ -121,7 +119,11 @@ public:
/* Print the help message */
/* Print the help message */
static void Help ( std : : string & ret ) {
static void Help ( std : : string & ret ) {
ret . append ( " --db=DB_PATH " ) ;
ret . append ( " --db=DB_PATH [ " ) ;
ret . append ( LDBCommand : : BLOOM_ARG ) ;
ret . append ( " <int,e.g.:14>] [ " ) ;
ret . append ( LDBCommand : : COMPRESSION_TYPE_ARG ) ;
ret . append ( " <no|snappy|zlib|bzip2>] " ) ;
}
}
/* Run the command, and return the execute result. */
/* Run the command, and return the execute result. */
@ -130,8 +132,11 @@ public:
return ;
return ;
}
}
if ( db_ = = NULL & & ! NoDBOpen ( ) ) {
if ( db_ = = NULL & & ! NoDBOpen ( ) ) {
OpenDB ( ) ;
OpenDB ( ) ;
if ( ! exec_state_ . IsNotStarted ( ) ) {
return ;
}
}
}
DoCommand ( ) ;
DoCommand ( ) ;
@ -169,6 +174,9 @@ protected:
void OpenDB ( ) {
void OpenDB ( ) {
leveldb : : Options opt = PrepareOptionsForOpenDB ( ) ;
leveldb : : Options opt = PrepareOptionsForOpenDB ( ) ;
if ( ! exec_state_ . IsNotStarted ( ) ) {
return ;
}
// Open the DB.
// Open the DB.
leveldb : : Status st = leveldb : : DB : : Open ( opt , db_path_ , & db_ ) ;
leveldb : : Status st = leveldb : : DB : : Open ( opt , db_path_ , & db_ ) ;
if ( ! st . ok ( ) ) {
if ( ! st . ok ( ) ) {
@ -190,6 +198,13 @@ protected:
LDBCommandExecuteResult exec_state_ ;
LDBCommandExecuteResult exec_state_ ;
std : : string db_path_ ;
std : : string db_path_ ;
leveldb : : DB * db_ ;
leveldb : : DB * db_ ;
private :
static const char * BLOOM_ARG ;
static const char * COMPRESSION_TYPE_ARG ;
std : : vector < std : : string > open_args_ ;
void parse_open_args ( std : : vector < std : : string > & args ) ;
} ;
} ;
class Compactor : public LDBCommand {
class Compactor : public LDBCommand {