blob: 1235b5f8294177516b68ade05be9f51ba56ece66 [file] [log] [blame]
package org.apache.yoko.util.concurrent;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
final class WeakNode<T> extends WeakReference<T> implements VNode<T> {
final Runnable cleanup;
private PNode<T> prev;
private NNode<T> next;
WeakNode(T value, ReferenceQueue<T> q, Runnable cleanup) {
super(value, q);
this.cleanup = cleanup;
}
public PNode<T> prev() {return prev;}
public NNode<T> next() {return next;}
public void prev(PNode<T> pnode) {prev = pnode;}
public void next(NNode<T> nnode) {next = nnode;}
public void insertAfter(PNode<T> pnode) {
NNode<T> nnode = pnode.next();
this.next = nnode;
this.prev = pnode;
nnode.prev(this);
pnode.next(this);
}
public void delete() {
this.prev.next(this.next);
this.next.prev(this.prev);
this.prev = null;
this.next = null;
}
}