KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4odoc > f1 > semaphores > LockManager


1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com */
2
3 package com.db4odoc.f1.semaphores;
4
5 import com.db4o.*;
6 import com.db4o.ext.*;
7
8 /**
9  * 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 JavaDoc 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 JavaDoc obj){
26         long id = _objectContainer.getID(obj);
27         return _objectContainer.setSemaphore(SEMAPHORE_NAME + id, WAIT_FOR_AVAILABILITY);
28     }
29     
30     public void unlock(Object JavaDoc obj){
31         long id = _objectContainer.getID(obj);
32         _objectContainer.releaseSemaphore(SEMAPHORE_NAME + id);
33     }
34 }
35
Popular Tags