CommandInterface.hh

00001 //********************************************************************
00002 //*** ResourcePool/oracle/CommandInterface.hh
00003 //*** Copyright (c) 2003-2009 by Markus Winand <mws@fatalmind.com>
00004 //*** $Id: CommandInterface.hh,v 1.21 2009-03-02 14:16:45 mws Exp $
00005 //********************************************************************
00006 /*
00007 This file is part of ResourcePool.
00008 
00009 ResourcePool is free software; you can redistribute it
00010 and/or modify it under the terms of the GNU General Public License
00011 as published by the Free Software Foundation; either version 2 of 
00012 the License, or (at your option) any later version.
00013 
00014 ResourcePool is distributed in the hope that it will be
00015 useful, but WITHOUT ANY WARRANTY; without even the implied warranty
00016 of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 GNU General Public License for more details.
00018 
00019 You should have received a copy of the GNU General Public License
00020 along with ResourcePool; if not, write to the Free Software
00021 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00022 02111-1307  USA */
00023 
00024 #ifndef RESOURCEPOOL_ORACLE_COMMANDINTERFACE_HH
00025 #define RESOURCEPOOL_ORACLE_COMMANDINTERFACE_HH
00026 
00027 #ifndef RESOURCEPOOL_ORACLE_RESOURCEFWD_HH
00028 #include "ResourceFwd.hh"
00029 #endif
00030 
00031 #ifndef RESOURCEPOOL_COMMAND_HH
00032 #include "ResourcePool/Command.hh"
00033 #endif
00034 
00035 #ifndef RESOURCEPOOL_ORACLE_STATEMENTCACHE_HH
00036 #include "StatementCache.hh"
00037 #endif
00038 
00039 namespace fatalmind {
00040 namespace oracle {
00041 
00042 /*
00043  * this class implements the non template specialized parts 
00044  * which are common to ALL oracle commands (SQL based as well
00045  * as Transaction)
00046  *
00047  * currently this manages the auto commit stuff only. this is on
00048  * per default and managed for transactions. not available to the user.
00049  * 
00050  * public interfaces since it will be inherited protected
00051  */
00052 class CommandBase 
00053 {
00054     public:
00055         CommandBase() 
00056         {
00057         }
00058 
00059         virtual ~CommandBase() {
00060         }
00061 };
00062 
00063 template<class TM, template<class> class SLMDC>
00064 class Transaction;
00065 
00073 template<class TM, template<class> class SLMDC>
00074 class CommandInterface
00075 : public Command<fatalmind::oracle::ResourceType<TM, SLMDC> > 
00076 , protected CommandBase
00077 {
00078     public:
00079         virtual ~CommandInterface() {
00080         };
00081 
00082         virtual void execute(oracleResource<TM>& hand);
00083 
00084     protected:
00085         virtual void _execute(oracleResource<TM>&, StatementCache&) {
00086             throw Exception("_execute not properly overloaded");
00087         };
00088 
00089     friend
00090         class Transaction<TM, SLMDC>;
00091 };
00092 
00093 } // namespace oracle
00094 } // namespace fatalmind
00095 #endif

Generated on Mon Nov 9 16:21:24 2009 for ResourcePool by  doxygen 1.5.3