01
/**//* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com */
02
03
package com.db4odoc.semaphores;
04
05
import com.db4o.*;
06
import com.db4o.ext.*;
07
08
/** *//**
09
* This class demonstrates a very rudimentary implementation of
10
* virtual "locks" on objects with db4o. All code that is intended to
11
* obey these locks will have to call lock() and unlock().
12
*/
13
public class LockManager ...{
14
15
private final String SEMAPHORE_NAME = "locked: ";
16
17
private final int WAIT_FOR_AVAILABILITY = 300; // 300
18
// milliseconds
19
20
private final ExtObjectContainer _objectContainer;
21
22
public LockManager(ObjectContainer objectContainer) ...{
23
_objectContainer = objectContainer.ext();
24
}
25
26
public boolean lock(Object obj) ...{
27
long id = _objectContainer.getID(obj);
28
return _objectContainer.setSemaphore(SEMAPHORE_NAME + id,
29
WAIT_FOR_AVAILABILITY);
30
}
31
32
public void unlock(Object obj) ...{
33
long id = _objectContainer.getID(obj);
34
_objectContainer.releaseSemaphore(SEMAPHORE_NAME + id);
35
}
36
}