1 /***************************************************************************
2 * Copyright (C) 2007 by www.databasecache.com *
3 * Contact: praba_tuty@databasecache.com *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 ***************************************************************************/
27 signed int noOfReaders_
;
28 //-1 indicates write lock is taken
30 unsigned char waitReaders_
;
31 unsigned char waitWriters_
;
32 LockInfo() { noOfReaders_
= 0; waitReaders_
= 0; waitWriters_
= 0; }
48 LockListIter(LockHashNode
*head
) { iter
= head
;}
50 friend class LockList
;
60 class DatabaseManagerImpl
;
62 //DatabaseManager has this object and give reference to it to
63 //Table interface and so on.
67 Database
*systemDatabase_
;
70 LockHashNode
* allocLockNode(LockInfo
&info
, void *tuple
);
71 void deallocLockNode(LockHashNode
*head
, Bucket
*bucket
);
72 Bucket
* getLockBucket(void *tuple
);
76 LockManager(Database
*sysDb_
){ systemDatabase_
= sysDb_
;}
77 DbRetVal
getSharedLock(void *tuple
, Transaction
**trans
);
78 DbRetVal
getExclusiveLock(void * tuple
, Transaction
**trans
);
79 DbRetVal
releaseLock(void *tuple
);
80 DbRetVal
isExclusiveLocked(void *tuple
, bool &status
);