Xbase64 Class Library 3.1.2

xblock.h

Go to the documentation of this file.
00001 /*  xblock.h
00002 
00003     Xbase project source code
00004   
00005     This file conatains a header file for the xbLock virtual objects which
00006     is used for controlling file and record locking.  Record and file
00007     locking has been rewritten in version 3.
00008 
00009     Copyright (C) 1997,2003  Gary A Kunkel
00010     
00011     This program is free software; you can redistribute it and/or modify
00012     it under the terms of the GNU Lesser General Public License as published by
00013     the Free Software Foundation; either version 2 of the License, or
00014     (at your option) any later version.
00015 
00016     This program is distributed in the hope that it will be useful,
00017     but WITHOUT ANY WARRANTY; without even the implied warranty of
00018     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019     GNU Lesser General Public License for more details.
00020     You should have received a copy of the GNU Lesser General Public License
00021     along with this program; if not, write to the Free Software
00022     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 
00024 
00025     Contact:
00026     
00027      Email:
00028     
00029       xdb-devel@lists.sourceforge.net
00030       xdb-users@lists.sourceforge.net
00031       
00032       
00033      Regular Mail:
00034      
00035        XBase Support
00036        149C South Main St
00037        Keller Texas, 76248     
00038        USA
00039 */
00040 
00044 #ifndef __XB_XBLOCK_H__
00045 #define __XB_XBLOCK_H__
00046 
00047 #ifdef __GNU LesserG__
00048 #pragma interface
00049 #endif
00050 
00051 #ifdef XB_LOCKING_ON
00052 
00054 
00057 class XBDLLEXPORT xbLock
00058 {
00059 public:
00060   xbLock( xbDbf * dbf );
00061   virtual ~xbLock();
00062   virtual xbShort LockTableHeader( xbShort LockType ) = 0;
00063   virtual xbShort LockTable( xbShort LockType ) = 0;
00064   virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len ) = 0;
00065   virtual xbShort LockMemo( xbShort LockType ) = 0;
00066   virtual xbShort LockIndex( xbShort LockType ) = 0;
00067   virtual xbShort UnlockAll() = 0;
00068   virtual xbShort LockInit() { return XB_NO_ERROR; }
00069 
00070 protected:
00071   xbDbf   *dbf;
00072   xbShort HdrLockCnt;
00073   xbShort TableLockCnt;
00074   xbShort MemoLockCnt;
00075   xbShort IndexLockCnt;
00076   xbShort LockFile( int fn, xbShort LockType, xbOffT lockLen  );
00077 };
00078 
00079 class XBDLLEXPORT xbaseLock : xbLock
00080 {
00081 public:
00082   xbaseLock( xbDbf * pdbf );
00083   virtual ~xbaseLock() {}
00084   virtual xbShort LockTableHeader( xbShort LockType );
00085   virtual xbShort LockTable( xbShort LockType );
00086   virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
00087   virtual xbShort LockMemo( xbShort LockType ); 
00088   virtual xbShort LockIndex( xbShort LockType ); 
00089   virtual xbShort UnlockAll(); 
00090   virtual xbShort LockInit();
00091 private:
00092   FILE    *lfh;                    /* lock file handle */
00093 
00094 };
00095 
00096 class XBDLLEXPORT dbaseLock : xbLock
00097 {
00098 public:
00099   dbaseLock( xbDbf * pdbf );
00100   virtual ~dbaseLock() {}
00101   virtual xbShort LockTableHeader( xbShort LockType );
00102   virtual xbShort LockTable( xbShort LockType );
00103   virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
00104   virtual xbShort LockMemo( xbShort LockType ); 
00105   virtual xbShort LockIndex( xbShort LockType ); 
00106   virtual xbShort UnlockAll(); 
00107 };
00108 
00109 
00110 class XBDLLEXPORT clipperLock : xbLock
00111 {
00112 public:
00113   clipperLock( xbDbf * pdbf );
00114   virtual ~clipperLock() {}
00115   virtual xbShort LockTableHeader( xbShort LockType );
00116   virtual xbShort LockTable( xbShort LockType );
00117   virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
00118   virtual xbShort LockMemo( xbShort LockType ); 
00119   virtual xbShort LockIndex( xbShort LockType ); 
00120   virtual xbShort UnlockAll(); 
00121 };
00122 
00123 class XBDLLEXPORT foxproLock : xbLock
00124 {
00125 public:
00126   foxproLock( xbDbf * pdbf );
00127   virtual ~foxproLock() {}
00128   virtual xbShort LockTableHeader( xbShort LockType );
00129   virtual xbShort LockTable( xbShort LockType );
00130   virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
00131   virtual xbShort LockMemo( xbShort LockType ); 
00132   virtual xbShort LockIndex( xbShort LockType ); 
00133   virtual xbShort UnlockAll(); 
00134 };
00135 
00136 class XBDLLEXPORT noLock : xbLock
00137 {
00138 public:
00139   noLock( xbDbf * pdbf ) : xbLock( pdbf ) {};
00140   virtual ~noLock() {}
00141   virtual xbShort LockTableHeader( xbShort LockType )
00142             { return XB_NO_ERROR; }
00143   virtual xbShort LockTable( xbShort LockType )
00144             { return XB_NO_ERROR; }
00145   virtual xbShort LockRecord( xbShort LockType, xbULong RecNo )
00146             { return XB_NO_ERROR; }
00147   virtual xbShort LockMemo( xbShort LockType )
00148             { return XB_NO_ERROR; }
00149   virtual xbShort LockIndex( xbShort LockType )
00150             { return XB_NO_ERROR; }
00151   virtual xbShort UnlockAll()
00152             { return XB_NO_ERROR; }
00153 };
00154 
00155 
00156 
00157 
00158 #endif   // XB_LOCKING_ON
00159 #endif   // __XB_XBLOCK_H__