KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4o > YapReferences


1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com
2
3 This file is part of the db4o open source object database.
4
5 db4o is free software; you can redistribute it and/or modify it under
6 the terms of version 2 of the GNU General Public License as published
7 by the Free Software Foundation and as clarified by db4objects' GPL
8 interpretation policy, available at
9 http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10 Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11 Suite 350, San Mateo, CA 94403, USA.
12
13 db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17
18 You should have received a copy of the GNU General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */

21 package com.db4o;
22
23 import com.db4o.foundation.*;
24
25 /**
26  *
27  */

28 class YapReferences implements Runnable JavaDoc {
29     
30     final Object JavaDoc _queue;
31     private final YapStream _stream;
32     private SimpleTimer _timer;
33     public final boolean _weak;
34
35     YapReferences(YapStream a_stream) {
36         _stream = a_stream;
37         _weak = (!(a_stream instanceof YapObjectCarrier)
38             && Platform4.hasWeakReferences() && a_stream.configImpl().weakReferences());
39         _queue = _weak ? Platform4.createReferenceQueue() : null;
40     }
41
42     Object JavaDoc createYapRef(YapObject a_yo, Object JavaDoc obj) {
43         
44         if (!_weak) {
45             return obj;
46         }
47         
48         return Platform4.createYapRef(_queue, a_yo, obj);
49     }
50
51     void pollReferenceQueue() {
52         if (_weak) {
53             Platform4.pollReferenceQueue(_stream, _queue);
54         }
55     }
56
57     public void run() {
58         pollReferenceQueue();
59     }
60
61     void startTimer() {
62         if (!_weak) {
63             return;
64         }
65         
66         if(! _stream.configImpl().weakReferences()){
67             return;
68         }
69         
70         if (_stream.configImpl().weakReferenceCollectionInterval() <= 0) {
71             return;
72         }
73
74         if (_timer != null) {
75             return;
76         }
77         
78         _timer = new SimpleTimer(this, _stream.configImpl().weakReferenceCollectionInterval(), "db4o WeakReference collector");
79     }
80
81     void stopTimer() {
82         if (_timer == null){
83             return;
84         }
85         _timer.stop();
86         _timer = null;
87     }
88     
89 }
Popular Tags