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_MYSQL_RESOURCEPOOL_HH
00025 #include "ResourcePool.hh"
00026 #endif
00027
00028 #include <memory>
00029
00030 #ifndef RESOURCEPOOL_MYSQL_TRANSACTION_HH
00031 #define RESOURCEPOOL_MYSQL_TRANSACTION_HH
00032
00033 #ifndef RESOURCEPOOL_COMMAND_HH
00034 #include "ResourcePool/Command.hh"
00035 #endif
00036
00037
00038
00039
00040
00041 #ifndef RESOURCEPOOL_MYSQL_MYSQLFWD_HH
00042 #include "mysqlFwd.hh"
00043 #endif
00044
00045 #ifndef INCLUDED_GC_PTR_HH
00046 #include "mm/gc_ptr.hh"
00047 #endif
00048
00049 #include <string>
00050
00051 namespace fatalmind {
00052 namespace mysql {
00053
00057 class Transaction
00058 : public Command<fatalmind::ResourceType::mysql>
00059 {
00060 public:
00061 Transaction(const Command<fatalmind::ResourceType::mysql>& );
00062 Transaction(const ResourcePool<ResourceType>& p, const Command<fatalmind::ResourceType::mysql>& );
00063 Transaction();
00064 Transaction(const Transaction&);
00065 virtual ~Transaction();
00066 virtual void execute(mysqlResource&);
00067
00068 protected:
00069 virtual Clone* DoClone() const;
00070 void startTransaction(mysqlResource&);
00071 void commit(mysqlResource&);
00072 void rollback(mysqlResource&);
00073
00074 private:
00075 std::auto_ptr<Command<fatalmind::ResourceType::mysql> > cmd;
00076 };
00077
00078
00079 }
00080 }
00081 #endif