1 21 package com.db4o; 22 23 import com.db4o.foundation.*; 24 25 28 class YapReferences implements Runnable { 29 30 final Object _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 createYapRef(YapObject a_yo, Object 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
|