1
/*------------------------------------------------------------------------------
2
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
4
* Distributable under the terms of either the Apache License (Version 2.0) or
5
* the GNU Lesser General Public License, as specified in the COPYING file.
6
------------------------------------------------------------------------------*/
7
#ifndef _lucene_store_LockFactory_
8
#define _lucene_store_LockFactory_
10
#include "CLucene/LuceneThreads.h"
12
CL_CLASS_DEF(store,LuceneLock)
13
CL_CLASS_DEF(store,NoLock)
18
class CLUCENE_EXPORT LockFactory: LUCENE_BASE {
20
std::string lockPrefix;
24
virtual ~LockFactory();
26
void setLockPrefix( const char* lockPrefix );
27
const char* getLockPrefix();
29
virtual LuceneLock* makeLock( const char* lockName )=0;
30
virtual void clearLock( const char* lockName )=0;
33
class CLUCENE_EXPORT SingleInstanceLockFactory: public LockFactory {
36
DEFINE_MUTEX(locks_LOCK)
38
SingleInstanceLockFactory();
39
~SingleInstanceLockFactory();
41
LuceneLock* makeLock( const char* lockName );
42
void clearLock( const char* lockName );
45
class CLUCENE_EXPORT NoLockFactory: public LockFactory {
47
static NoLockFactory* singleton;
48
static NoLock* singletonLock;
50
static NoLockFactory* getNoLockFactory();
51
LuceneLock* makeLock( const char* lockName );
52
void clearLock( const char* lockName );
54
/** called when lucene_shutdown is called */
55
static CLUCENE_LOCAL void _shutdown();
58
class CLUCENE_EXPORT FSLockFactory: public LockFactory {
63
/** Constructs a FS Lock factory. The default file mode is user writable */
64
FSLockFactory( const char* lockDir=NULL, int filemode=-1 );
67
void setLockDir( const char* lockDir );
69
LuceneLock* makeLock( const char* lockName );
70
void clearLock( const char* lockName );
72
static const char* getClassName();
73
const char* getObjectName();