STLdb

PrevUpHome

Class TransactionalOperation

stldb::TransactionalOperation

Synopsis

// 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 &);
};

Description

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 construct/copy/destruct

  1. ~TransactionalOperation();

TransactionalOperation public member functions

  1. virtual const char * get_container_name() const = 0;
  2. virtual int get_op_code() const = 0;
  3. virtual int add_to_log(boost_oarchive_t & buffer) = 0;
  4. virtual void commit(Transaction & trans) = 0;
  5. virtual void rollback(Transaction & trans) = 0;
  6. virtual void recover(boost_iarchive_t & stream, transaction_id_t lsn);
  7. template<typename boost_archive_out> 
      void serialize_header(boost_archive_out & s);

TransactionalOperation public static functions

  1. template<typename boost_archive_in> 
      static std::pair< std::string, int > 
      deserialize_header(boost_archive_in & s);

PrevUpHome