/*******************************************************************************
- * Copyright (c) 2011-2012 Ericsson, Ecole Polytechnique de Montreal and others
+ * Copyright (c) 2011, 2014 Ericsson, Ecole Polytechnique de Montreal and others
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0 which
package org.eclipse.linuxtools.internal.ctf.core.trace;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* <b><u>StreamInputPacketIndexEntry</u></b>
* <p>
// Attributes
// ------------------------------------------------------------------------
-
-
/**
* Offset of the packet in the file, in bytes
*/
- final private long offsetBytes;
+ final private long fOffsetBytes;
/**
* Offset of the data in the packet, in bits
*/
- private int dataOffsetBits = 0;
+ private long fDataOffsetBits = 0;
/**
* Packet size, in bits
*/
- private int packetSizeBits = 0;
+ private long fPacketSizeBits = 0;
/**
* Content size, in bits
*/
- private int contentSizeBits = 0;
+ private long fContentSizeBits = 0;
/**
* Begin timestamp
*/
- private long timestampBegin = 0;
+ private long fTimestampBegin = 0;
/**
* End timestamp
*/
- private long timestampEnd = 0;
+ private long fTimestampEnd = 0;
+ /**
+ * How many lost events are there?
+ */
+ private long fLostEvents = 0;
+
+ /**
+ * Which target is being traced
+ */
+ private String fTarget ;
+ private long fTargetID;
- private long indexBegin = Long.MAX_VALUE;
+ /**
+ * Attributes of this index entry
+ */
+ private final Map<String, Object> fAttributes = new HashMap<>();
- private long indexEnd = Long.MAX_VALUE;
// ------------------------------------------------------------------------
// Constructors
*/
public StreamInputPacketIndexEntry(long offset) {
- this.offsetBytes = offset;
+ fOffsetBytes = offset;
}
// ------------------------------------------------------------------------
* @return True if the packet includes the timestamp.
*/
boolean includes(long ts) {
- return (ts >= timestampBegin) && (ts <= timestampEnd);
+ return (ts >= fTimestampBegin) && (ts <= fTimestampEnd);
}
- boolean includesIndex(long index){
- return (index >= indexBegin) && (index <= indexEnd);
- }
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
- return "StreamInputPacketIndexEntry [offsetBytes=" + offsetBytes //$NON-NLS-1$
- + ", timestampBegin=" + timestampBegin + ", timestampEnd=" //$NON-NLS-1$ //$NON-NLS-2$
- + timestampEnd + ", indexBegin=" + indexBegin + ", indexEnd=" //$NON-NLS-1$ //$NON-NLS-2$
- + indexEnd + "]"; //$NON-NLS-1$
+ return "StreamInputPacketIndexEntry [offsetBytes=" + fOffsetBytes //$NON-NLS-1$
+ + ", timestampBegin=" + fTimestampBegin + ", timestampEnd=" //$NON-NLS-1$ //$NON-NLS-2$
+ + fTimestampEnd + "]"; //$NON-NLS-1$
}
// ------------------------------------------------------------------------
* @return the offsetBytes
*/
public long getOffsetBytes() {
- return offsetBytes;
+ return fOffsetBytes;
}
/**
* @return the dataOffsetBits
*/
- public int getDataOffsetBits() {
- return dataOffsetBits;
+ public long getDataOffsetBits() {
+ return fDataOffsetBits;
}
/**
- * @param dataOffsetBits the dataOffsetBits to set
+ * @param dataOffsetBits
+ * the dataOffsetBits to set
*/
- public void setDataOffsetBits(int dataOffsetBits) {
- this.dataOffsetBits = dataOffsetBits;
+ public void setDataOffsetBits(long dataOffsetBits) {
+ fDataOffsetBits = dataOffsetBits;
}
/**
* @return the packetSizeBits
*/
- public int getPacketSizeBits() {
- return packetSizeBits;
+ public long getPacketSizeBits() {
+ return fPacketSizeBits;
}
/**
- * @param packetSizeBits the packetSizeBits to set
+ * @param packetSizeBits
+ * the packetSizeBits to set
*/
- public void setPacketSizeBits(int packetSizeBits) {
- this.packetSizeBits = packetSizeBits;
+ public void setPacketSizeBits(long packetSizeBits) {
+ fPacketSizeBits = packetSizeBits;
}
/**
* @return the contentSizeBits
*/
- public int getContentSizeBits() {
- return contentSizeBits;
+ public long getContentSizeBits() {
+ return fContentSizeBits;
}
/**
- * @param contentSizeBits the contentSizeBits to set
+ * @param contentSizeBits
+ * the contentSizeBits to set
*/
- public void setContentSizeBits(int contentSizeBits) {
- this.contentSizeBits = contentSizeBits;
+ public void setContentSizeBits(long contentSizeBits) {
+ fContentSizeBits = contentSizeBits;
}
/**
* @return the timestampBegin
*/
public long getTimestampBegin() {
- return timestampBegin;
+ return fTimestampBegin;
}
/**
- * @param timestampBegin the timestampBegin to set
+ * @param timestampBegin
+ * the timestampBegin to set
*/
public void setTimestampBegin(long timestampBegin) {
- this.timestampBegin = timestampBegin;
+ fTimestampBegin = timestampBegin;
}
/**
* @return the timestampEnd
*/
public long getTimestampEnd() {
- return timestampEnd;
+ return fTimestampEnd;
}
/**
- * @param timestampEnd the timestampEnd to set
+ * @param timestampEnd
+ * the timestampEnd to set
*/
public void setTimestampEnd(long timestampEnd) {
- this.timestampEnd = timestampEnd;
+ fTimestampEnd = timestampEnd;
}
/**
- * @return the indexBegin
+ * @return the lostEvents in this packet
*/
- public long getIndexBegin() {
- return indexBegin;
+ public long getLostEvents() {
+ return fLostEvents;
}
/**
- * @param indexBegin the indexBegin to set
+ * @param lostEvents the lostEvents to set
*/
- public void setIndexBegin(long indexBegin) {
- this.indexBegin = indexBegin;
+ public void setLostEvents(long lostEvents) {
+ fLostEvents = lostEvents;
}
/**
- * @return the indexEnd
+ * Add an attribute to this index entry
+ *
+ * @param field
+ * The name of the attribute
+ * @param value
+ * The value to insert
+ */
+ public void addAttribute(String field, Object value) {
+ fAttributes.put(field, value);
+ }
+
+ /**
+ * Retrieve the value of an existing attribute
+ *
+ * @param field
+ * The name of the attribute
+ * @return The value that was stored, or null if it wasn't found
+ */
+ public Object lookupAttribute(String field){
+ return fAttributes.get(field);
+ }
+
+ /**
+ * @return The target that is being traced
+ */
+ public String getTarget() {
+ return fTarget;
+ }
+
+ /**
+ * Assign a target to this index entry
+ *
+ * @param target
+ * The target to assign
*/
- public long getIndexEnd() {
- return indexEnd;
+ public void setTarget(String target) {
+ fTarget = target;
+ fTargetID = Integer.parseInt(target.replaceAll("[\\D]", "")); //$NON-NLS-1$ //$NON-NLS-2$ // slow
}
/**
- * @param indexEnd the indexEnd to set
+ * @return The ID of the target
*/
- public void setIndexEnd(long indexEnd) {
- this.indexEnd = indexEnd;
+ public long getTargetId(){
+ return fTargetID;
}
}