include/SqlLogConnection.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2007 by Prabakaran Thirumalai   *
00003  *   praba_tuty@yahoo.com   *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00019  ***************************************************************************/
00020 #ifndef SQLLOGCONNECTION_H
00021 #define SQLLOGCONNECTION_H
00022 #include<CSql.h>
00023 #include<AbsSqlConnection.h>
00024 #include<SqlFactory.h>
00025 #include<Util.h>
00026 #include<Network.h>
00027 
00028 class CachedTable{
00029     public:
00030     char tableName[IDENTIFIER_LENGTH];
00031 };
00032 
00037 class SqlLogConnection : public AbsSqlConnection
00038 {
00039     Connection dummyConn;
00040 
00041     //stores all the sql log packets to be shipped to peers
00042     List logStore;
00043 
00044     //stores all the prepare log packets to be shipped to peers
00045     //as soon as connection is reestablished to cache server
00046     List prepareStore;
00047 
00048     //stores all the prepare log packets to be shipped between two
00049     //consecutive commits. Commit() call sends first all the stmts
00050     //prepared during the course and then sends the exec pkts
00051     List curPrepareStore;
00052 
00053     //sync mode of the current transaction
00054     TransSyncMode syncMode;
00055 
00056     //stores client objects in it for peer
00057     NetworkTable nwTable;
00058 
00059     static UniqueID txnUID;
00060 
00061     static List cacheList;
00062     DbRetVal populateCachedTableList();
00063 
00064     public:
00065     SqlLogConnection(){innerConn = NULL; syncMode = ASYNC;}
00066 
00067     bool isTableCached(char *name);
00068 
00069     //Note::forced to implement this as it is pure virtual in base class
00070     Connection& getConnObject(){  return dummyConn; }
00071 
00072     DbRetVal connect (char *user, char * pass);
00073 
00074     DbRetVal disconnect();
00075 
00076     DbRetVal commit();
00077 
00078     DbRetVal rollback();
00079 
00080     DbRetVal beginTrans (IsolationLevel isoLevel, TransSyncMode mode);
00081 
00082     DbRetVal addPacket(BasePacket *pkt);
00083 
00084     DbRetVal addPreparePacket(PacketPrepare *pkt);
00085     DbRetVal removePreparePacket(int stmtid);
00086 
00087     DbRetVal setSyncMode(TransSyncMode mode);
00088     TransSyncMode getSyncMode() { return syncMode; }
00089     DbRetVal connectIfNotConnected() { return nwTable.connectIfNotConnected(); }
00090     DbRetVal  sendAndReceive(NetworkPacketType type, char *packet, int length);
00091     friend class SqlFactory;
00092 };
00093 
00094 #endif

Generated on Mon Jun 9 22:37:14 2008 for csql by  doxygen 1.4.7