Kyoto Cabinet
Classes | Public Types | Public Member Functions | Static Public Member Functions
kyotocabinet::BasicDB Class Reference

Basic implementation of database. More...

#include <kcdb.h>

List of all members.

Classes

class  Cursor
 Interface of cursor to indicate a record. More...
class  Error
 Error data. More...
class  FileProcessor
 Interface to process the database file. More...
class  Logger
 Interface to log internal information and errors. More...
class  MetaTrigger
 Interface to trigger meta database operations. More...
class  ProgressChecker
 Interface to check progress status of long process. More...

Public Types

enum  Type {
  TYPEVOID = 0x00, TYPEPHASH = 0x10, TYPEPTREE = 0x11, TYPESTASH = 0x18,
  TYPECACHE = 0x20, TYPEGRASS = 0x21, TYPEHASH = 0x30, TYPETREE = 0x31,
  TYPEDIR = 0x40, TYPEFOREST = 0x41, TYPETEXT = 0x50, TYPEMISC = 0x80
}
 Database types. More...
enum  OpenMode {
  OREADER = 1 << 0, OWRITER = 1 << 1, OCREATE = 1 << 2, OTRUNCATE = 1 << 3,
  OAUTOTRAN = 1 << 4, OAUTOSYNC = 1 << 5, ONOLOCK = 1 << 6, OTRYLOCK = 1 << 7,
  ONOREPAIR = 1 << 8
}
 Open modes. More...

Public Member Functions

virtual ~BasicDB ()
 Destructor.
virtual Error error () const =0
 Get the last happened error.
virtual void set_error (const char *file, int32_t line, const char *func, Error::Code code, const char *message)=0
 Set the error information.
virtual bool open (const std::string &path, uint32_t mode=OWRITER|OCREATE)=0
 Open a database file.
virtual bool close ()=0
 Close the database file.
virtual bool accept_bulk (const std::vector< std::string > &keys, Visitor *visitor, bool writable=true)=0
 Accept a visitor to multiple records at once.
virtual bool iterate (Visitor *visitor, bool writable=true, ProgressChecker *checker=NULL)=0
 Iterate to accept a visitor for each record.
virtual bool scan_parallel (Visitor *visitor, size_t thnum, ProgressChecker *checker=NULL)=0
 Scan each record in parallel.
virtual bool synchronize (bool hard=false, FileProcessor *proc=NULL, ProgressChecker *checker=NULL)=0
 Synchronize updated contents with the file and the device.
virtual bool occupy (bool writable=true, FileProcessor *proc=NULL)=0
 Occupy database by locking and do something meanwhile.
bool copy (const std::string &dest, ProgressChecker *checker=NULL)
 Create a copy of the database file.
virtual bool begin_transaction (bool hard=false)=0
 Begin transaction.
virtual bool begin_transaction_try (bool hard=false)=0
 Try to begin transaction.
virtual bool end_transaction (bool commit=true)=0
 End transaction.
virtual int64_t size ()=0
 Get the size of the database file.
virtual std::string path ()=0
 Get the path of the database file.
virtual bool status (std::map< std::string, std::string > *strmap)=0
 Get the miscellaneous status information.
bool set (const char *kbuf, size_t ksiz, const char *vbuf, size_t vsiz)
 Set the value of a record.
bool set (const std::string &key, const std::string &value)
 Set the value of a record.
bool add (const char *kbuf, size_t ksiz, const char *vbuf, size_t vsiz)
 Add a record.
bool add (const std::string &key, const std::string &value)
 Set the value of a record.
bool replace (const char *kbuf, size_t ksiz, const char *vbuf, size_t vsiz)
 Replace the value of a record.
bool replace (const std::string &key, const std::string &value)
 Replace the value of a record.
bool append (const char *kbuf, size_t ksiz, const char *vbuf, size_t vsiz)
 Append the value of a record.
bool append (const std::string &key, const std::string &value)
 Set the value of a record.
int64_t increment (const char *kbuf, size_t ksiz, int64_t num, int64_t orig=0)
 Add a number to the numeric value of a record.
int64_t increment (const std::string &key, int64_t num, int64_t orig=0)
 Add a number to the numeric value of a record.
double increment_double (const char *kbuf, size_t ksiz, double num, double orig=0)
 Add a number to the numeric double value of a record.
double increment_double (const std::string &key, double num, double orig)
 Add a number to the numeric double value of a record.
bool cas (const char *kbuf, size_t ksiz, const char *ovbuf, size_t ovsiz, const char *nvbuf, size_t nvsiz)
 Perform compare-and-swap.
bool cas (const std::string &key, const std::string &ovalue, const std::string &nvalue)
 Perform compare-and-swap.
bool remove (const char *kbuf, size_t ksiz)
 Remove a record.
bool remove (const std::string &key)
 Remove a record.
char * get (const char *kbuf, size_t ksiz, size_t *sp)
 Retrieve the value of a record.
bool get (const std::string &key, std::string *value)
 Retrieve the value of a record.
int32_t get (const char *kbuf, size_t ksiz, char *vbuf, size_t max)
 Retrieve the value of a record.
int32_t check (const char *kbuf, size_t ksiz)
 Check the existence of a record.
int32_t check (const std::string &key)
 Check the existence of a record.
char * seize (const char *kbuf, size_t ksiz, size_t *sp)
 Retrieve the value of a record and remove it atomically.
bool seize (const std::string &key, std::string *value)
 Retrieve the value of a record and remove it atomically.
int64_t set_bulk (const std::map< std::string, std::string > &recs, bool atomic=true)
 Store records at once.
int64_t remove_bulk (const std::vector< std::string > &keys, bool atomic=true)
 Remove records at once.
int64_t get_bulk (const std::vector< std::string > &keys, std::map< std::string, std::string > *recs, bool atomic=true)
 Retrieve records at once.
bool dump_snapshot (std::ostream *dest, ProgressChecker *checker=NULL)
 Dump records into a data stream.
bool dump_snapshot (const std::string &dest, ProgressChecker *checker=NULL)
 Dump records into a file.
bool load_snapshot (std::istream *src, ProgressChecker *checker=NULL)
 Load records from a data stream.
bool load_snapshot (const std::string &src, ProgressChecker *checker=NULL)
 Load records from a file.
virtual Cursorcursor ()=0
 Create a cursor object.
virtual void log (const char *file, int32_t line, const char *func, Logger::Kind kind, const char *message)=0
 Write a log message.
virtual bool tune_logger (Logger *logger, uint32_t kinds=Logger::WARN|Logger::ERROR)=0
 Set the internal logger.
virtual bool tune_meta_trigger (MetaTrigger *trigger)=0
 Set the internal meta operation trigger.

Static Public Member Functions

static const char * typecname (uint32_t type)
 Get the class name of a database type.
static const char * typestring (uint32_t type)
 Get the description string of a database type.

Detailed Description

Basic implementation of database.

Note:
This class is an abstract class to prescribe the interface of file operations and provide mix-in methods. This class can be inherited but overwriting methods is forbidden. Before every database operation, it is necessary to call the BasicDB::open method in order to open a database file and connect the database object to it. To avoid data missing or corruption, it is important to close every database file by the BasicDB::close method when the database is no longer in use. It is forbidden for multible database objects in a process to open the same database at the same time. It is forbidden to share a database object with child processes.

Member Enumeration Documentation

Database types.

Enumerator:
TYPEVOID 

void database

TYPEPHASH 

prototype hash database

TYPEPTREE 

prototype tree database

TYPESTASH 

stash database

TYPECACHE 

cache hash database

TYPEGRASS 

cache tree database

TYPEHASH 

file hash database

TYPETREE 

file tree database

TYPEDIR 

directory hash database

TYPEFOREST 

directory tree database

TYPETEXT 

plain text database

TYPEMISC 

miscellaneous database

Open modes.

Enumerator:
OREADER 

open as a reader

OWRITER 

open as a writer

OCREATE 

writer creating

OTRUNCATE 

writer truncating

OAUTOTRAN 

auto transaction

OAUTOSYNC 

auto synchronization

ONOLOCK 

open without locking

OTRYLOCK 

lock without blocking

ONOREPAIR 

open without auto repair


Constructor & Destructor Documentation

virtual kyotocabinet::BasicDB::~BasicDB ( ) [virtual]

Destructor.

Note:
If the database is not closed, it is closed implicitly.

Member Function Documentation

virtual Error kyotocabinet::BasicDB::error ( ) const [pure virtual]
virtual void kyotocabinet::BasicDB::set_error ( const char *  file,
int32_t  line,
const char *  func,
Error::Code  code,
const char *  message 
) [pure virtual]

Set the error information.

Parameters:
filethe file name of the program source code.
linethe line number of the program source code.
functhe function name of the program source code.
codean error code.
messagea supplement message.
virtual bool kyotocabinet::BasicDB::open ( const std::string &  path,
uint32_t  mode = OWRITER|OCREATE 
) [pure virtual]

Open a database file.

Parameters:
paththe path of a database file.
modethe connection mode. BasicDB::OWRITER as a writer, BasicDB::OREADER as a reader. The following may be added to the writer mode by bitwise-or: BasicDB::OCREATE, which means it creates a new database if the file does not exist, BasicDB::OTRUNCATE, which means it creates a new database regardless if the file exists, BasicDB::OAUTOTRAN, which means each updating operation is performed in implicit transaction, BasicDB::OAUTOSYNC, which means each updating operation is followed by implicit synchronization with the file system. The following may be added to both of the reader mode and the writer mode by bitwise-or: BasicDB::ONOLOCK, which means it opens the database file without file locking, BasicDB::OTRYLOCK, which means locking is performed without blocking, File::ONOREPAIR, which means the database file is not repaired implicitly even if file destruction is detected.
Returns:
true on success, or false on failure.
Note:
Every opened database must be closed by the BasicDB::close method when it is no longer in use. It is not allowed for two or more database objects in the same process to keep their connections to the same database file at the same time.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, kyotocabinet::DirDB, kyotocabinet::TextDB, and kyotocabinet::PolyDB.

virtual bool kyotocabinet::BasicDB::close ( ) [pure virtual]
virtual bool kyotocabinet::BasicDB::accept_bulk ( const std::vector< std::string > &  keys,
Visitor visitor,
bool  writable = true 
) [pure virtual]

Accept a visitor to multiple records at once.

Parameters:
keysspecifies a string vector of the keys.
visitora visitor object.
writabletrue for writable operation, or false for read-only operation.
Returns:
true on success, or false on failure.
Note:
The operations for specified records are performed atomically and other threads accessing the same records are blocked. To avoid deadlock, any explicit database operation must not be performed in this function.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::DirDB, kyotocabinet::CacheDB, kyotocabinet::TextDB, kyotocabinet::StashDB, and kyotocabinet::PolyDB.

virtual bool kyotocabinet::BasicDB::iterate ( Visitor visitor,
bool  writable = true,
ProgressChecker checker = NULL 
) [pure virtual]

Iterate to accept a visitor for each record.

Parameters:
visitora visitor object.
writabletrue for writable operation, or false for read-only operation.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
Note:
The whole iteration is performed atomically and other threads are blocked. To avoid deadlock, any explicit database operation must not be performed in this function.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::DirDB, kyotocabinet::CacheDB, kyotocabinet::StashDB, kyotocabinet::TextDB, and kyotocabinet::PolyDB.

virtual bool kyotocabinet::BasicDB::scan_parallel ( Visitor visitor,
size_t  thnum,
ProgressChecker checker = NULL 
) [pure virtual]

Scan each record in parallel.

Parameters:
visitora visitor object.
thnumthe number of worker threads.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
Note:
This function is for reading records and not for updating ones. The return value of the visitor is just ignored. To avoid deadlock, any explicit database operation must not be performed in this function.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::DirDB, kyotocabinet::StashDB, kyotocabinet::TextDB, and kyotocabinet::PolyDB.

virtual bool kyotocabinet::BasicDB::synchronize ( bool  hard = false,
FileProcessor proc = NULL,
ProgressChecker checker = NULL 
) [pure virtual]

Synchronize updated contents with the file and the device.

Parameters:
hardtrue for physical synchronization with the device, or false for logical synchronization with the file system.
proca postprocessor object. If it is NULL, no postprocessing is performed.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
Note:
The operation of the postprocessor is performed atomically and other threads accessing the same record are blocked. To avoid deadlock, any explicit database operation must not be performed in this function.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

virtual bool kyotocabinet::BasicDB::occupy ( bool  writable = true,
FileProcessor proc = NULL 
) [pure virtual]

Occupy database by locking and do something meanwhile.

Parameters:
writabletrue to use writer lock, or false to use reader lock.
proca processor object. If it is NULL, no processing is performed.
Returns:
true on success, or false on failure.
Note:
The operation of the processor is performed atomically and other threads accessing the same record are blocked. To avoid deadlock, any explicit database operation must not be performed in this function.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

bool kyotocabinet::BasicDB::copy ( const std::string &  dest,
ProgressChecker checker = NULL 
)

Create a copy of the database file.

Parameters:
destthe path of the destination file.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
virtual bool kyotocabinet::BasicDB::begin_transaction ( bool  hard = false) [pure virtual]

Begin transaction.

Parameters:
hardtrue for physical synchronization with the device, or false for logical synchronization with the file system.
Returns:
true on success, or false on failure.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

virtual bool kyotocabinet::BasicDB::begin_transaction_try ( bool  hard = false) [pure virtual]

Try to begin transaction.

Parameters:
hardtrue for physical synchronization with the device, or false for logical synchronization with the file system.
Returns:
true on success, or false on failure.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

virtual bool kyotocabinet::BasicDB::end_transaction ( bool  commit = true) [pure virtual]

End transaction.

Parameters:
committrue to commit the transaction, or false to abort the transaction.
Returns:
true on success, or false on failure.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

virtual int64_t kyotocabinet::BasicDB::size ( ) [pure virtual]

Get the size of the database file.

Returns:
the size of the database file in bytes, or -1 on failure.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

virtual std::string kyotocabinet::BasicDB::path ( ) [pure virtual]

Get the path of the database file.

Returns:
the path of the database file, or an empty string on failure.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

virtual bool kyotocabinet::BasicDB::status ( std::map< std::string, std::string > *  strmap) [pure virtual]

Get the miscellaneous status information.

Parameters:
strmapa string map to contain the result.
Returns:
true on success, or false on failure.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::HashDB, kyotocabinet::PolyDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

bool kyotocabinet::BasicDB::set ( const char *  kbuf,
size_t  ksiz,
const char *  vbuf,
size_t  vsiz 
) [virtual]

Set the value of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
vbufthe pointer to the value region.
vsizthe size of the value region.
Returns:
true on success, or false on failure.
Note:
If no record corresponds to the key, a new record is created. If the corresponding record exists, the value is overwritten.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::set ( const std::string &  key,
const std::string &  value 
) [virtual]

Set the value of a record.

Note:
Equal to the original DB::set method except that the parameters are std::string.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::add ( const char *  kbuf,
size_t  ksiz,
const char *  vbuf,
size_t  vsiz 
) [virtual]

Add a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
vbufthe pointer to the value region.
vsizthe size of the value region.
Returns:
true on success, or false on failure.
Note:
If no record corresponds to the key, a new record is created. If the corresponding record exists, the record is not modified and false is returned.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::add ( const std::string &  key,
const std::string &  value 
) [virtual]

Set the value of a record.

Note:
Equal to the original DB::add method except that the parameters are std::string.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::replace ( const char *  kbuf,
size_t  ksiz,
const char *  vbuf,
size_t  vsiz 
) [virtual]

Replace the value of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
vbufthe pointer to the value region.
vsizthe size of the value region.
Returns:
true on success, or false on failure.
Note:
If no record corresponds to the key, no new record is created and false is returned. If the corresponding record exists, the value is modified.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::replace ( const std::string &  key,
const std::string &  value 
) [virtual]

Replace the value of a record.

Note:
Equal to the original DB::replace method except that the parameters are std::string.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::append ( const char *  kbuf,
size_t  ksiz,
const char *  vbuf,
size_t  vsiz 
) [virtual]

Append the value of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
vbufthe pointer to the value region.
vsizthe size of the value region.
Returns:
true on success, or false on failure.
Note:
If no record corresponds to the key, a new record is created. If the corresponding record exists, the given value is appended at the end of the existing value.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::append ( const std::string &  key,
const std::string &  value 
) [virtual]

Set the value of a record.

Note:
Equal to the original DB::append method except that the parameters are std::string.

Implements kyotocabinet::DB.

int64_t kyotocabinet::BasicDB::increment ( const char *  kbuf,
size_t  ksiz,
int64_t  num,
int64_t  orig = 0 
) [virtual]

Add a number to the numeric value of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
numthe additional number.
origthe origin number if no record corresponds to the key. If it is INT64MIN and no record corresponds, this function fails. If it is INT64MAX, the value is set as the additional number regardless of the current value.
Returns:
the result value, or kyotocabinet::INT64MIN on failure.
Note:
The value is serialized as an 8-byte binary integer in big-endian order, not a decimal string. If existing value is not 8-byte, this function fails.

Implements kyotocabinet::DB.

int64_t kyotocabinet::BasicDB::increment ( const std::string &  key,
int64_t  num,
int64_t  orig = 0 
) [virtual]

Add a number to the numeric value of a record.

Note:
Equal to the original DB::increment method except that the parameter is std::string.

Implements kyotocabinet::DB.

double kyotocabinet::BasicDB::increment_double ( const char *  kbuf,
size_t  ksiz,
double  num,
double  orig = 0 
) [virtual]

Add a number to the numeric double value of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
numthe additional number.
origthe origin number if no record corresponds to the key. If it is negative infinity and no record corresponds, this function fails. If it is positive infinity, the value is set as the additional number regardless of the current value.
Returns:
the result value, or Not-a-number on failure.
Note:
The value is serialized as an 16-byte binary fixed-point number in big-endian order, not a decimal string. If existing value is not 16-byte, this function fails.

Implements kyotocabinet::DB.

double kyotocabinet::BasicDB::increment_double ( const std::string &  key,
double  num,
double  orig 
) [virtual]

Add a number to the numeric double value of a record.

Note:
Equal to the original DB::increment_double method except that the parameter is std::string.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::cas ( const char *  kbuf,
size_t  ksiz,
const char *  ovbuf,
size_t  ovsiz,
const char *  nvbuf,
size_t  nvsiz 
) [virtual]

Perform compare-and-swap.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
ovbufthe pointer to the old value region. NULL means that no record corresponds.
ovsizthe size of the old value region.
nvbufthe pointer to the new value region. NULL means that the record is removed.
nvsizthe size of new old value region.
Returns:
true on success, or false on failure.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::cas ( const std::string &  key,
const std::string &  ovalue,
const std::string &  nvalue 
) [virtual]

Perform compare-and-swap.

Note:
Equal to the original DB::cas method except that the parameters are std::string.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::remove ( const char *  kbuf,
size_t  ksiz 
) [virtual]

Remove a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
Returns:
true on success, or false on failure.
Note:
If no record corresponds to the key, false is returned.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::remove ( const std::string &  key) [virtual]

Remove a record.

Note:
Equal to the original DB::remove method except that the parameter is std::string.

Implements kyotocabinet::DB.

char* kyotocabinet::BasicDB::get ( const char *  kbuf,
size_t  ksiz,
size_t *  sp 
) [virtual]

Retrieve the value of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
spthe pointer to the variable into which the size of the region of the return value is assigned.
Returns:
the pointer to the value region of the corresponding record, or NULL on failure.
Note:
If no record corresponds to the key, NULL is returned. Because an additional zero code is appended at the end of the region of the return value, the return value can be treated as a C-style string. Because the region of the return value is allocated with the the new[] operator, it should be released with the delete[] operator when it is no longer in use.

Implements kyotocabinet::DB.

bool kyotocabinet::BasicDB::get ( const std::string &  key,
std::string *  value 
) [virtual]

Retrieve the value of a record.

Note:
Equal to the original DB::get method except that the first parameters is the key string and the second parameter is a string to contain the result and the return value is bool for success.

Implements kyotocabinet::DB.

int32_t kyotocabinet::BasicDB::get ( const char *  kbuf,
size_t  ksiz,
char *  vbuf,
size_t  max 
) [virtual]

Retrieve the value of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
vbufthe pointer to the buffer into which the value of the corresponding record is written.
maxthe size of the buffer.
Returns:
the size of the value, or -1 on failure.

Implements kyotocabinet::DB.

int32_t kyotocabinet::BasicDB::check ( const char *  kbuf,
size_t  ksiz 
) [virtual]

Check the existence of a record.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
Returns:
the size of the value, or -1 on failure.

Implements kyotocabinet::DB.

int32_t kyotocabinet::BasicDB::check ( const std::string &  key) [virtual]

Check the existence of a record.

Note:
Equal to the original DB::check method except that the parameter is std::string.

Implements kyotocabinet::DB.

char* kyotocabinet::BasicDB::seize ( const char *  kbuf,
size_t  ksiz,
size_t *  sp 
)

Retrieve the value of a record and remove it atomically.

Parameters:
kbufthe pointer to the key region.
ksizthe size of the key region.
spthe pointer to the variable into which the size of the region of the return value is assigned.
Returns:
the pointer to the value region of the corresponding record, or NULL on failure.
Note:
If no record corresponds to the key, NULL is returned. Because an additional zero code is appended at the end of the region of the return value, the return value can be treated as a C-style string. Because the region of the return value is allocated with the the new[] operator, it should be released with the delete[] operator when it is no longer in use.
bool kyotocabinet::BasicDB::seize ( const std::string &  key,
std::string *  value 
)

Retrieve the value of a record and remove it atomically.

Note:
Equal to the original DB::seize method except that the first parameters is the key string and the second parameter is a string to contain the result and the return value is bool for success.
int64_t kyotocabinet::BasicDB::set_bulk ( const std::map< std::string, std::string > &  recs,
bool  atomic = true 
)

Store records at once.

Parameters:
recsthe records to store.
atomictrue to perform all operations atomically, or false for non-atomic operations.
Returns:
the number of stored records, or -1 on failure.
int64_t kyotocabinet::BasicDB::remove_bulk ( const std::vector< std::string > &  keys,
bool  atomic = true 
)

Remove records at once.

Parameters:
keysthe keys of the records to remove.
atomictrue to perform all operations atomically, or false for non-atomic operations.
Returns:
the number of removed records, or -1 on failure.
int64_t kyotocabinet::BasicDB::get_bulk ( const std::vector< std::string > &  keys,
std::map< std::string, std::string > *  recs,
bool  atomic = true 
)

Retrieve records at once.

Parameters:
keysthe keys of the records to retrieve.
recsa string map to contain the retrieved records.
atomictrue to perform all operations atomically, or false for non-atomic operations.
Returns:
the number of retrieved records, or -1 on failure.
bool kyotocabinet::BasicDB::dump_snapshot ( std::ostream *  dest,
ProgressChecker checker = NULL 
)

Dump records into a data stream.

Parameters:
destthe destination stream.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
bool kyotocabinet::BasicDB::dump_snapshot ( const std::string &  dest,
ProgressChecker checker = NULL 
)

Dump records into a file.

Parameters:
destthe path of the destination file.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
bool kyotocabinet::BasicDB::load_snapshot ( std::istream *  src,
ProgressChecker checker = NULL 
)

Load records from a data stream.

Parameters:
srcthe source stream.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
bool kyotocabinet::BasicDB::load_snapshot ( const std::string &  src,
ProgressChecker checker = NULL 
)

Load records from a file.

Parameters:
srcthe path of the source file.
checkera progress checker object. If it is NULL, no checking is performed.
Returns:
true on success, or false on failure.
virtual Cursor* kyotocabinet::BasicDB::cursor ( ) [pure virtual]

Create a cursor object.

Returns:
the return value is the created cursor object.
Note:
Because the object of the return value is allocated by the constructor, it should be released with the delete operator when it is no longer in use.

Implements kyotocabinet::DB.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::PolyDB, kyotocabinet::HashDB, kyotocabinet::DirDB, kyotocabinet::ProtoDB< STRMAP, DBTYPE >, kyotocabinet::CacheDB, kyotocabinet::StashDB, and kyotocabinet::TextDB.

virtual void kyotocabinet::BasicDB::log ( const char *  file,
int32_t  line,
const char *  func,
Logger::Kind  kind,
const char *  message 
) [pure virtual]

Write a log message.

Parameters:
filethe file name of the program source code.
linethe line number of the program source code.
functhe function name of the program source code.
kindthe kind of the event. Logger::DEBUG for debugging, Logger::INFO for normal information, Logger::WARN for warning, and Logger::ERROR for fatal error.
messagethe supplement message.
virtual bool kyotocabinet::BasicDB::tune_logger ( Logger logger,
uint32_t  kinds = Logger::WARN|Logger::ERROR 
) [pure virtual]

Set the internal logger.

Parameters:
loggerthe logger object.
kindskinds of logged messages by bitwise-or: Logger::DEBUG for debugging, Logger::INFO for normal information, Logger::WARN for warning, and Logger::ERROR for fatal error.
Returns:
true on success, or false on failure.

Implemented in kyotocabinet::PlantDB< BASEDB, DBTYPE >, kyotocabinet::PolyDB, kyotocabinet::HashDB, and kyotocabinet::DirDB.

virtual bool kyotocabinet::BasicDB::tune_meta_trigger ( MetaTrigger trigger) [pure virtual]

Set the internal meta operation trigger.

Parameters:
triggerthe trigger object.
Returns:
true on success, or false on failure.

Implemented in kyotocabinet::PolyDB, kyotocabinet::HashDB, and kyotocabinet::DirDB.

static const char* kyotocabinet::BasicDB::typecname ( uint32_t  type) [static]

Get the class name of a database type.

Parameters:
typethe database type.
Returns:
the string of the type name.
static const char* kyotocabinet::BasicDB::typestring ( uint32_t  type) [static]

Get the description string of a database type.

Parameters:
typethe database type.
Returns:
the string of the type name.