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_SQL_RTSQLTRANSACTION_HH
00025 #define RESOURCEPOOL_SQL_RTSQLTRANSACTION_HH
00026
00027 #include "mm/gc_ptr.hh"
00028 #include "ResourcePool/Command.hh"
00029 #include "ResourcePool/SQL/Resource.hh"
00030 #include "ResourcePool/ResourcePool.hh"
00031
00032 namespace fatalmind {
00033 namespace SQL {
00034
00035 template<class TM> class RTSQLTransaction_Impl;
00036
00047 template<class TM>
00048 class RTSQLTransaction
00049 : public Command<ResourceType<TM> >
00050 {
00051 public:
00052 typedef Command<ResourceType<TM> > innercommand_t;
00057 RTSQLTransaction(const ResourcePool<ResourceType<TM> >& p, const innercommand_t& cmd);
00058 RTSQLTransaction(const RTSQLTransaction<TM>& rho);
00059 virtual ~RTSQLTransaction();
00060
00061 void execute(typename ResourceType<TM>::resource_t& hand);
00062
00063 protected:
00064 virtual Clone* DoClone() const;
00065
00066 private:
00067 typedef RTSQLTransaction_Impl<TM> rimpl_t;
00068 gc_ptr<rimpl_t> _realSQLTransaction;
00069
00070 typedef typename SQLFactory<TM>::databaseType_t databaseType_t;
00071 };
00072
00073
00074 }
00075 }
00076 #endif