/** map of all the event types */
private final Map<Long,HashMap<Long, IEventDeclaration>> eventDecs = new HashMap<Long, HashMap<Long,IEventDeclaration>>();
- /** map of all the event types */
- private final Map<StreamInput,HashMap<Long, EventDefinition>> eventDefs = new HashMap<StreamInput, HashMap<Long,EventDefinition>>();
+
/** map of all the indexes */
private final Map<StreamInput, StreamInputPacketIndex> indexes = new HashMap<StreamInput, StreamInputPacketIndex>();
return indexes.get(id);
}
+
/**
* Gets an event Declaration hashmap for a given StreamInput
- * @param id the StreamInput
- * @return the hashmap with the event definitions
+ *
+ * @param id
+ * the StreamInput
+ * @return an empty hashmap, please see deprecated
* @since 2.0
+ * @deprecated You should be using {@link StreamInputReader#getEventDefinitions()}
+ * instead.
*/
+ @Deprecated
public Map<Long, EventDefinition> getEventDefs(StreamInput id) {
- if(! eventDefs.containsKey(id)){
- eventDefs.put(id, new HashMap<Long, EventDefinition>());
- }
- return eventDefs.get(id);
+ return new HashMap<Long, EventDefinition>();
}
/**
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel.MapMode;
import java.util.Collection;
-import java.util.Map;
import org.eclipse.linuxtools.ctf.core.event.EventDefinition;
import org.eclipse.linuxtools.ctf.core.event.IEventDeclaration;
/** Stream event context definition.*/
private final StructDefinition streamEventContextDef;
- /** Maps event ID to event definitions. */
- private final Map<Long, EventDefinition> events;
-
/** Reference to the index entry of the current packet. */
private StreamInputPacketIndexEntry currentPacket = null;
bitBuffer = new BitBuffer();
bitBuffer.setByteOrder(streamInputReader.getByteOrder());
- events = streamInputReader.getStreamInput().getStream().getTrace().getEventDefs(streamInputReader.getStreamInput());
lostSoFar = 0;
/* Create trace packet header definition. */
Collection<IEventDeclaration> eventDecls = streamInputReader.getStreamInput().getStream().getEvents().values();
for (IEventDeclaration event : eventDecls) {
- if (!events.containsKey(event.getId())) {
+ if (!streamInputReader.getEventDefinitions().containsKey(event.getId())) {
EventDefinition eventDef = event.createDefinition(streamInputReader);
- events.put(event.getId(), eventDef);
+ streamInputReader.addEventDefinition(event.getId(), eventDef);
}
}
}
}
/* Get the right event definition using the event id. */
- EventDefinition eventDef = events.get(eventID);
+ EventDefinition eventDef = streamInputReader.getEventDefinitions().get(eventID);
if (eventDef == null) {
throw new CTFReaderException("Incorrect event id : " + eventID); //$NON-NLS-1$
}
package org.eclipse.linuxtools.ctf.core.trace;
import java.nio.ByteOrder;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.linuxtools.ctf.core.event.EventDefinition;
import org.eclipse.linuxtools.ctf.core.event.types.StructDefinition;
private CTFTraceReader parent;
+ /** Map of all the event types */
+ private final Map<Long, EventDefinition> eventDefs = new HashMap<Long,EventDefinition>();
// ------------------------------------------------------------------------
// Constructors
return streamInput;
}
+ /**
+ * Gets the event definition hashmap for this StreamInput
+ *
+ * @return Unmodifiable map with the event definitions
+ * @since 2.1
+ */
+ public Map<Long, EventDefinition> getEventDefinitions() {
+ return Collections.unmodifiableMap(eventDefs);
+ }
+
+ /**
+ * Add an event definition to this stream input reader.
+ *
+ * @param id
+ * The id of the event definition. This will overwrite any
+ * existing definition with the same id.
+ * @param def
+ * The matching event definition
+ * @since 2.1
+ */
+ public void addEventDefinition(Long id, EventDefinition def) {
+ eventDefs.put(id, def);
+ }
+
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------