![]() |
stldb::TransactionalOperation
// In header: </Users/bobw/workspaces/STLdb/stldb_lib/stldb/transaction.h> class TransactionalOperation : public boost::intrusive::list_base_hook< optimize_size< false > > { public: // construct/copy/destruct ~TransactionalOperation(); // public member functions virtual const char * get_container_name() const = 0; virtual int get_op_code() const = 0; virtual int add_to_log(boost_oarchive_t &) = 0; virtual void commit(Transaction &) = 0; virtual void rollback(Transaction &) = 0; virtual void recover(boost_iarchive_t &, transaction_id_t); template<typename boost_archive_out> void serialize_header(boost_archive_out &); // public static functions template<typename boost_archive_in> static std::pair< std::string, int > deserialize_header(boost_archive_in &); };
A transaction accumulates a set of TransactionalOperations, and a TransactionalOperation is any object implementing this interface. This polymorphic approach is used so that when the transaction is committed, the transaction commit or rollback can be done by a generic bit of code which uses that polymorphism.
TransactionalOperation public member functionsvirtual const char * get_container_name() const = 0;
virtual int get_op_code() const = 0;
virtual int add_to_log(boost_oarchive_t & buffer) = 0;
virtual void commit(Transaction & trans) = 0;
virtual void rollback(Transaction & trans) = 0;
virtual void recover(boost_iarchive_t & stream, transaction_id_t lsn);
template<typename boost_archive_out> void serialize_header(boost_archive_out & s);