* <p>
* Reads the events of a packet of a trace file.
*/
-class StreamInputPacketReader implements IDefinitionScope {
+public class StreamInputPacketReader implements IDefinitionScope {
// ------------------------------------------------------------------------
// Constants
*/
private int currentCpu = 0;
+ /**
+ * number of lost events in this packet
+ */
+ private int lostEvents;
+
+ private int lostSoFar;
+
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
* Create definitions needed to read the events.
*/
createDefinitions();
+
+ lostEvents = 0 ;
+ lostSoFar = 0 ;
}
// ------------------------------------------------------------------------
*/
if (getStreamPacketContextDef() != null) {
getStreamPacketContextDef().read(getBitBuffer());
+ /*
+ * Read CPU ID
+ */
+
Definition cpuiddef = getStreamPacketContextDef().lookupDefinition("cpu_id"); //$NON-NLS-1$
if (cpuiddef instanceof IntegerDefinition) {
currentCpu = (int) ((IntegerDefinition) cpuiddef).getValue();
}
+ /*
+ * Read number of lost events
+ */
+ Definition lostEventsdef = getStreamPacketContextDef().lookupDefinition("events_discarded"); //$NON-NLS-1$
+ if (cpuiddef instanceof IntegerDefinition) {
+ lostEvents = (int) ((IntegerDefinition) lostEventsdef).getValue();
+ }
+
}
/*
Long eventID = null;
long timestamp = 0;
+
+ if( lostEvents > lostSoFar)
+ {
+ EventDefinition eventDef = EventDeclaration.getLostEventDeclaration().createDefinition(streamInputReader);
+ eventDef.setTimestamp(this.lastTimestamp);
+ ++lostSoFar;
+ return eventDef;
+ }
StructDefinition sehd = getStreamEventHeaderDef(); // acronym for a long variable name
BitBuffer currentBitBuffer = getBitBuffer();
/*
/*
* Read the event context.
*/
- if (eventDef.context != null) {
- eventDef.context.read(currentBitBuffer);
+ if (eventDef.getContext() != null) {
+ eventDef.getContext().read(currentBitBuffer);
}
/*
* Read the event fields.
*/
- if (eventDef.fields != null) {
- eventDef.fields.read(currentBitBuffer);
+ if (eventDef.getFields() != null) {
+ eventDef.getFields().read(currentBitBuffer);
}
/*
* Set the event timestamp using the timestamp calculated by
* updateTimestamp.
*/
- eventDef.timestamp = timestamp;
+ eventDef.setTimestamp(timestamp);
return eventDef;
}