@ -17,6 +17,9 @@
# include <leveldb/db.h>
# include <leveldb/db.h>
# include <leveldb/write_batch.h>
# include <leveldb/write_batch.h>
static const size_t DBWRAPPER_PREALLOC_KEY_SIZE = 64 ;
static const size_t DBWRAPPER_PREALLOC_VALUE_SIZE = 1024 ;
class dbwrapper_error : public std : : runtime_error
class dbwrapper_error : public std : : runtime_error
{
{
public :
public :
@ -60,12 +63,12 @@ public:
void Write ( const K & key , const V & value )
void Write ( const K & key , const V & value )
{
{
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
ssKey . reserve ( GetSerializeSize ( ssKey , key ) ) ;
ssKey . reserve ( DBWRAPPER_PREALLOC_KEY_SIZE ) ;
ssKey < < key ;
ssKey < < key ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
CDataStream ssValue ( SER_DISK , CLIENT_VERSION ) ;
CDataStream ssValue ( SER_DISK , CLIENT_VERSION ) ;
ssValue . reserve ( GetSerializeSize ( ssValue , value ) ) ;
ssValue . reserve ( DBWRAPPER_PREALLOC_VALUE_SIZE ) ;
ssValue < < value ;
ssValue < < value ;
ssValue . Xor ( dbwrapper_private : : GetObfuscateKey ( parent ) ) ;
ssValue . Xor ( dbwrapper_private : : GetObfuscateKey ( parent ) ) ;
leveldb : : Slice slValue ( & ssValue [ 0 ] , ssValue . size ( ) ) ;
leveldb : : Slice slValue ( & ssValue [ 0 ] , ssValue . size ( ) ) ;
@ -77,7 +80,7 @@ public:
void Erase ( const K & key )
void Erase ( const K & key )
{
{
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
ssKey . reserve ( GetSerializeSize ( ssKey , key ) ) ;
ssKey . reserve ( DBWRAPPER_PREALLOC_KEY_SIZE ) ;
ssKey < < key ;
ssKey < < key ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
@ -107,7 +110,7 @@ public:
template < typename K > void Seek ( const K & key ) {
template < typename K > void Seek ( const K & key ) {
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
ssKey . reserve ( GetSerializeSize ( ssKey , key ) ) ;
ssKey . reserve ( DBWRAPPER_PREALLOC_KEY_SIZE ) ;
ssKey < < key ;
ssKey < < key ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
piter - > Seek ( slKey ) ;
piter - > Seek ( slKey ) ;
@ -200,7 +203,7 @@ public:
bool Read ( const K & key , V & value ) const
bool Read ( const K & key , V & value ) const
{
{
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
ssKey . reserve ( GetSerializeSize ( ssKey , key ) ) ;
ssKey . reserve ( DBWRAPPER_PREALLOC_KEY_SIZE ) ;
ssKey < < key ;
ssKey < < key ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
@ -234,7 +237,7 @@ public:
bool Exists ( const K & key ) const
bool Exists ( const K & key ) const
{
{
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
CDataStream ssKey ( SER_DISK , CLIENT_VERSION ) ;
ssKey . reserve ( GetSerializeSize ( ssKey , key ) ) ;
ssKey . reserve ( DBWRAPPER_PREALLOC_KEY_SIZE ) ;
ssKey < < key ;
ssKey < < key ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;
leveldb : : Slice slKey ( & ssKey [ 0 ] , ssKey . size ( ) ) ;