Xbase64 Class Library 3.1.2
xblock.h
Go to the documentation of this file.
1/* xblock.h
2
3 Xbase project source code
4
5 This file conatains a header file for the xbLock virtual objects which
6 is used for controlling file and record locking. Record and file
7 locking has been rewritten in version 3.
8
9 Copyright (C) 1997,2003 Gary A Kunkel
10
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU Lesser General Public License for more details.
20 You should have received a copy of the GNU Lesser General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23
24
25 Contact:
26
27 Email:
28
29 xdb-devel@lists.sourceforge.net
30 xdb-users@lists.sourceforge.net
31
32
33 Regular Mail:
34
35 XBase Support
36 149C South Main St
37 Keller Texas, 76248
38 USA
39*/
40
44#ifndef __XB_XBLOCK_H__
45#define __XB_XBLOCK_H__
46
47#ifdef __GNU_LesserG__
48#pragma interface
49#endif
50
51#ifdef XB_LOCKING_ON
52
54
57class XBDLLEXPORT xbLock
58{
59public:
60 xbLock( xbDbf * dbf );
61 virtual ~xbLock();
62 virtual xbShort LockTableHeader( xbShort LockType ) = 0;
63 virtual xbShort LockTable( xbShort LockType ) = 0;
64 virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len ) = 0;
65 virtual xbShort LockMemo( xbShort LockType ) = 0;
66 virtual xbShort LockIndex( xbShort LockType ) = 0;
67 virtual xbShort UnlockAll() = 0;
68 virtual xbShort LockInit() { return XB_NO_ERROR; }
69
70protected:
71 xbDbf *dbf;
72 xbShort HdrLockCnt;
73 xbShort TableLockCnt;
74 xbShort MemoLockCnt;
75 xbShort IndexLockCnt;
76 xbShort LockFile( int fn, xbShort LockType, xbOffT lockLen );
77};
78
79class XBDLLEXPORT xbaseLock : xbLock
80{
81public:
82 xbaseLock( xbDbf * pdbf );
83 virtual ~xbaseLock() {}
84 virtual xbShort LockTableHeader( xbShort LockType );
85 virtual xbShort LockTable( xbShort LockType );
86 virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
87 virtual xbShort LockMemo( xbShort LockType );
88 virtual xbShort LockIndex( xbShort LockType );
89 virtual xbShort UnlockAll();
90 virtual xbShort LockInit();
91private:
92 FILE *lfh; /* lock file handle */
93
94};
95
96class XBDLLEXPORT dbaseLock : xbLock
97{
98public:
99 dbaseLock( xbDbf * pdbf );
100 virtual ~dbaseLock() {}
101 virtual xbShort LockTableHeader( xbShort LockType );
102 virtual xbShort LockTable( xbShort LockType );
103 virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
104 virtual xbShort LockMemo( xbShort LockType );
105 virtual xbShort LockIndex( xbShort LockType );
106 virtual xbShort UnlockAll();
107};
108
109
110class XBDLLEXPORT clipperLock : xbLock
111{
112public:
113 clipperLock( xbDbf * pdbf );
114 virtual ~clipperLock() {}
115 virtual xbShort LockTableHeader( xbShort LockType );
116 virtual xbShort LockTable( xbShort LockType );
117 virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
118 virtual xbShort LockMemo( xbShort LockType );
119 virtual xbShort LockIndex( xbShort LockType );
120 virtual xbShort UnlockAll();
121};
122
123class XBDLLEXPORT foxproLock : xbLock
124{
125public:
126 foxproLock( xbDbf * pdbf );
127 virtual ~foxproLock() {}
128 virtual xbShort LockTableHeader( xbShort LockType );
129 virtual xbShort LockTable( xbShort LockType );
130 virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
131 virtual xbShort LockMemo( xbShort LockType );
132 virtual xbShort LockIndex( xbShort LockType );
133 virtual xbShort UnlockAll();
134};
135
136class XBDLLEXPORT noLock : xbLock
137{
138public:
139 noLock( xbDbf * pdbf ) : xbLock( pdbf ) {};
140 virtual ~noLock() {}
141 virtual xbShort LockTableHeader( xbShort LockType )
142 { return XB_NO_ERROR; }
143 virtual xbShort LockTable( xbShort LockType )
144 { return XB_NO_ERROR; }
145 virtual xbShort LockRecord( xbShort LockType, xbULong RecNo )
146 { return XB_NO_ERROR; }
147 virtual xbShort LockMemo( xbShort LockType )
148 { return XB_NO_ERROR; }
149 virtual xbShort LockIndex( xbShort LockType )
150 { return XB_NO_ERROR; }
151 virtual xbShort UnlockAll()
152 { return XB_NO_ERROR; }
153};
154
155
156
157
158#endif // XB_LOCKING_ON
159#endif // __XB_XBLOCK_H__
xbMH struct
Definition: xbdbf.h:190
#define XBDLLEXPORT
Definition: xbase64.h:87
#define XB_NO_ERROR
Definition: xbretcod.h:50
short int xbShort
xbShort type
Definition: xbtypes.h:60
unsigned long int xbULong
xbULong type
Definition: xbtypes.h:50
long xbOffT
Definition: xbtypes.h:98