package eu.geclipse.traceview.nope.tracereader; import org.eclipse.ui.views.properties.IPropertyDescriptor; import eu.geclipse.traceview.IVectorEvent; import eu.geclipse.traceview.utils.AbstractTraceFileCache; public class VecEvent extends Event implements IVectorEvent { private final static int vectorClockOffset = 17; private static IPropertyDescriptor[] descriptors; public VecEvent( final int logicalClock, final Process processCache ) { super( logicalClock, processCache ); } static void addIds(AbstractTraceFileCache cache) { cache.addEntry( vectorClockOffset, cache.getNumberOfProcesses(), cache.getBitsForMaxValue( cache.estimateMaxLogicalClock() )+3, true ); // TODO find a way to estimate value or change to Integer.MAX_VALUE } @Override public IPropertyDescriptor[] getPropertyDescriptors() { if( descriptors == null ) { descriptors = buildPropertyDescriptors(); } return descriptors; } // ***************************************************** // * IVectorEvent // ***************************************************** /* * (non-Javadoc) * * @see eu.geclipse.traceview.IVectorEvent#getVectorClock() */ public int[] getVectorClock() { int[] result = new int[ getProcess().getTrace().getNumberOfProcesses() ]; this.process.readArray( this.logicalClock, vectorClockOffset, result ); return result; } protected void setVectorClock( final int[] src ) { this.process.writeArray( this.logicalClock, vectorClockOffset, src ); } }