diff options
Diffstat (limited to 'cpp/src/IceDB/IceDB.h')
-rw-r--r-- | cpp/src/IceDB/IceDB.h | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/cpp/src/IceDB/IceDB.h b/cpp/src/IceDB/IceDB.h index 8019a9c30a9..29a6a95ff85 100644 --- a/cpp/src/IceDB/IceDB.h +++ b/cpp/src/IceDB/IceDB.h @@ -54,7 +54,9 @@ public: virtual std::string ice_id() const; virtual void ice_print(std::ostream&) const; -#ifndef ICE_CPP11_MAPPING +#ifdef ICE_CPP11_MAPPING + virtual IceUtil::Exception* ice_cloneImpl() const; +#else virtual LMDBException* ice_clone() const; #endif virtual void ice_throw() const; @@ -82,7 +84,9 @@ public: virtual std::string ice_id() const; virtual void ice_print(std::ostream&) const; -#ifndef ICE_CPP11_MAPPING +#ifdef ICE_CPP11_MAPPING + virtual IceUtil::Exception* ice_cloneImpl() const; +#else virtual KeyTooLongException* ice_clone() const; #endif virtual void ice_throw() const; @@ -108,7 +112,9 @@ public: virtual std::string ice_id() const; virtual void ice_print(std::ostream&) const; -#ifndef ICE_CPP11_MAPPING +#ifdef ICE_CPP11_MAPPING + virtual IceUtil::Exception* ice_cloneImpl() const; +#else virtual BadEnvException* ice_clone() const; #endif virtual void ice_throw() const; @@ -166,18 +172,23 @@ class ICE_DB_API Txn { public: - virtual ~Txn(); - void commit(); void rollback(); MDB_txn* mtxn() const; + bool isReadOnly() const + { + return _readOnly; + } + protected: - explicit Txn(const Env&, unsigned int); + Txn(const Env&, unsigned int); + ~Txn(); MDB_txn* _mtxn; + const bool _readOnly; private: @@ -190,9 +201,8 @@ class ICE_DB_API ReadOnlyTxn : public Txn { public: - virtual ~ReadOnlyTxn(); - explicit ReadOnlyTxn(const Env&); + ~ReadOnlyTxn(); void reset(); void renew(); @@ -202,9 +212,8 @@ class ICE_DB_API ReadWriteTxn : public Txn { public: - virtual ~ReadWriteTxn(); - explicit ReadWriteTxn(const Env&); + ~ReadWriteTxn(); }; class ICE_DB_API DbiBase @@ -214,8 +223,6 @@ public: void clear(const ReadWriteTxn&); MDB_dbi mdbi() const; - virtual ~DbiBase(); - protected: DbiBase(const Txn&, const std::string&, unsigned int, MDB_cmp_func*); @@ -343,14 +350,12 @@ class ICE_DB_API CursorBase public: void close(); - MDB_cursor* mcursor() const; - virtual ~CursorBase(); - protected: - CursorBase(MDB_dbi dbi, const Txn& txn, bool); + CursorBase(MDB_dbi dbi, const Txn& txn); + ~CursorBase(); bool get(MDB_val*, MDB_val*, MDB_cursor_op); void put(MDB_val*, MDB_val*, unsigned int); @@ -374,21 +379,13 @@ class Cursor : public CursorBase { public: - Cursor(const Dbi<K, D, C, H>& dbi, const ReadOnlyTxn& txn) : - CursorBase(dbi.mdbi(), txn, true), - _marshalingContext(dbi.marshalingContext()) - { - } - - Cursor(const Dbi<K, D, C, H>& dbi, const ReadWriteTxn& txn) : - CursorBase(dbi.mdbi(), txn, false), + Cursor(const Dbi<K, D, C, H>& dbi, const Txn& txn) : + CursorBase(dbi.mdbi(), txn), _marshalingContext(dbi.marshalingContext()) { } - Cursor(const Dbi<K, D, C, H>& dbi, const Txn& txn) : - CursorBase(dbi.mdbi(), txn, dynamic_cast<const ReadOnlyTxn*>(&txn) != 0), - _marshalingContext(dbi.marshalingContext()) + ~Cursor() { } |