Xbase64 Class Library
3.1.2
|
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__