/* __ *\ ** ________ ___ / / ___ Scala API ** ** / __/ __// _ | / / / _ | (c) 2003-2012, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** \* */ package org.opendaylight.yangtools.triemap; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; abstract class MainNode extends BasicNode { public static final AtomicReferenceFieldUpdater updater = AtomicReferenceFieldUpdater.newUpdater (MainNode.class, MainNode.class, "prev"); public volatile MainNode prev = null; public abstract int cachedSize (Object ct); public boolean CAS_PREV (MainNode oldval, MainNode nval) { return updater.compareAndSet (this, oldval, nval); } public void WRITE_PREV (MainNode nval) { updater.set (this, nval); } // do we need this? unclear in the javadocs... // apparently not - volatile reads are supposed to be safe // regardless of whether there are concurrent ARFU updates public MainNode READ_PREV () { return updater.get (this); } }