package org.marketcetera.photon.internal.marketdata; import java.util.concurrent.Callable; import org.eclipse.emf.common.util.EList; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Provides an interface to an <code>EList</code> object that permits locked read and write operations. * * @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a> * @version $Id: LockableEList.java 16154 2012-07-14 16:34:05Z colin $ * @since 2.2.0 */ @ClassVersion("$Id: LockableEList.java 16154 2012-07-14 16:34:05Z colin $") public interface LockableEList<E> extends EList<E> { /** * Executes the given operation as a locked read. * * @param inOperation a <code>Callable<Tgt;</code> value * @return a <code>T</code> value */ public <T> T doReadOperation(Callable<T> inOperation); /** * Executes the given operation as a locked write. * * @param inOperation a <code>Callable<Tgt;</code> value * @return a <code>T</code> value */ public <T> T doWriteOperation(Callable<T> inOperation); }