00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
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;
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__