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