00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef RESOURCEPOOL_ORACLE_TRANSACTION_HH
00025 #define RESOURCEPOOL_ORACLE_TRANSACTION_HH
00026
00027 #ifndef RESOURCEPOOL_ORACLE_COMMANDINTERFACE_HH
00028 #include "CommandInterface.hh"
00029 #endif
00030
00031 #ifndef RESOURCEPOOL_ORACLE_STATEMENTCACHE_HH
00032 #include "StatementCache.hh"
00033 #endif
00034
00035 #ifndef INCLUDED_GC_PTR_HH
00036 #include "mm/gc_ptr.hh"
00037 #endif
00038
00039 namespace fatalmind {
00040 namespace oracle {
00041
00042 template<class TM, template<class> class SLMDC>
00043 class Transaction: public CommandInterface<TM, SLMDC> {
00044 public:
00048 Transaction(const Command<ResourceType<TM, SLMDC> >& );
00049 Transaction(const ResourcePool<ResourceType<TM> >& p, const Command<ResourceType<TM, SLMDC> >&);
00050 Transaction();
00051 Transaction(const Transaction<TM, SLMDC>&);
00052 virtual ~Transaction();
00053
00054
00055
00056 protected:
00057 virtual Clone* DoClone() const;
00058 virtual void _execute(oracleResource<TM>&, StatementCache&);
00059 void commit(oracleResource<TM>&);
00060 void rollback(oracleResource<TM>&);
00061 private:
00062 std::auto_ptr<Command<ResourceType<TM, SLMDC> > > cmd;
00063 };
00064
00065 }
00066 }
00067 #endif