diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java index b923155178f1ea5945e44459af23a1ea26a2a895..9ec0ec2d847e4107a92a02a57200ce17001f5c29 100644 --- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java +++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java @@ -8,7 +8,9 @@ import explorviz.live_trace_processing.Constants; import explorviz.live_trace_processing.reader.TimeProvider; import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord; import explorviz.live_trace_processing.record.event.AbstractAfterFailedEventRecord; +import explorviz.live_trace_processing.record.event.AbstractAfterRemoteEventRecord; import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord; +import explorviz.live_trace_processing.record.event.AbstractBeforeRemoteEventRecord; import explorviz.live_trace_processing.record.event.AbstractEventRecord; import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation; import explorviz.live_trace_processing.record.trace.Trace; @@ -28,19 +30,15 @@ class TraceReconstructionBuffer { updatedInThisPeriod = true; setMaxOrderIndex(event); - if (event instanceof AbstractBeforeEventRecord) { + if ((event instanceof AbstractBeforeEventRecord) + || (event instanceof AbstractBeforeRemoteEventRecord)) { openEvents++; final AbstractBeforeEventRecord beforeEvent = (AbstractBeforeEventRecord) event; - beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1, -1, -1)); // TODO - - // if - // invalid, - // trace - // would - // be - // null... + beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1, -1, -1)); + // TODO if invalid, trace would be null... } else if ((event instanceof AbstractAfterFailedEventRecord) - || (event instanceof AbstractAfterEventRecord)) { + || (event instanceof AbstractAfterEventRecord) + || (event instanceof AbstractAfterRemoteEventRecord)) { openEvents--; } diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java index e671bcf001d2102569c7cf2bb2b445870b0fb0d0..f91d611bf333072532f3bcd7747aa89524fb2ed4 100644 --- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java +++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java @@ -28,9 +28,12 @@ import explorviz.live_trace_processing.record.event.constructor.BeforeConstructo import explorviz.live_trace_processing.record.event.normal.AfterFailedOperationEventRecord; import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord; import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord; -import explorviz.live_trace_processing.record.event.remote.ReceivedRemoteCallRecord; -import explorviz.live_trace_processing.record.event.remote.SentRemoteCallRecord; -import explorviz.live_trace_processing.record.event.remote.UnknownReceivedRemoteCallRecord; +import explorviz.live_trace_processing.record.event.remote.AfterReceivedRemoteCallRecord; +import explorviz.live_trace_processing.record.event.remote.AfterSentRemoteCallRecord; +import explorviz.live_trace_processing.record.event.remote.AfterUnknownReceivedRemoteCallRecord; +import explorviz.live_trace_processing.record.event.remote.BeforeReceivedRemoteCallRecord; +import explorviz.live_trace_processing.record.event.remote.BeforeSentRemoteCallRecord; +import explorviz.live_trace_processing.record.event.remote.BeforeUnknownReceivedRemoteCallRecord; import explorviz.live_trace_processing.record.event.statics.AfterFailedStaticOperationEventRecord; import explorviz.live_trace_processing.record.event.statics.AfterStaticOperationEventRecord; import explorviz.live_trace_processing.record.event.statics.BeforeStaticOperationEventRecord; @@ -235,9 +238,9 @@ class TCPReaderOneClient extends Thread { buffer.compact(); return; } - case ReceivedRemoteCallRecord.CLAZZ_ID: { - if (buffer.remaining() >= ReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { - readInReceivedRemoteCallEvent(buffer); + case BeforeReceivedRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= BeforeReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInBeforeReceivedRemoteCallEvent(buffer); break; } buffer.position(buffer.position() - 1); @@ -271,18 +274,45 @@ class TCPReaderOneClient extends Thread { buffer.compact(); return; } - case SentRemoteCallRecord.CLAZZ_ID: { - if (buffer.remaining() >= SentRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { - readInSentRemoteCallEvent(buffer); + case BeforeSentRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= BeforeSentRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInBeforeSentRemoteCallEvent(buffer); break; } buffer.position(buffer.position() - 1); buffer.compact(); return; } - case UnknownReceivedRemoteCallRecord.CLAZZ_ID: { - if (buffer.remaining() >= UnknownReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { - readInUnknownReceivedRemoteCallEvent(buffer); + case AfterSentRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= AfterSentRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInAfterSentRemoteCallEvent(buffer); + break; + } + buffer.position(buffer.position() - 1); + buffer.compact(); + return; + } + case BeforeUnknownReceivedRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= BeforeUnknownReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInBeforeUnknownReceivedRemoteCallEvent(buffer); + break; + } + buffer.position(buffer.position() - 1); + buffer.compact(); + return; + } + case AfterUnknownReceivedRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= AfterUnknownReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInAfterUnknownReceivedRemoteCallEvent(buffer); + break; + } + buffer.position(buffer.position() - 1); + buffer.compact(); + return; + } + case AfterReceivedRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= AfterReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInAfterReceivedRemoteCallEvent(buffer); break; } buffer.position(buffer.position() - 1); @@ -421,7 +451,7 @@ class TCPReaderOneClient extends Thread { hostApplicationMetadata)); } - private final void readInReceivedRemoteCallEvent(final ByteBuffer buffer) { + private final void readInBeforeReceivedRemoteCallEvent(final ByteBuffer buffer) { final long callerTraceId = buffer.getLong(); final int callerOrderIndex = buffer.getInt(); @@ -429,8 +459,8 @@ class TCPReaderOneClient extends Thread { final long traceId = buffer.getLong(); final int orderIndex = buffer.getInt(); - putInRingBuffer(new ReceivedRemoteCallRecord(timestamp, callerTraceId, callerOrderIndex, - traceId, orderIndex, hostApplicationMetadata)); + putInRingBuffer(new BeforeReceivedRemoteCallRecord(timestamp, callerTraceId, + callerOrderIndex, traceId, orderIndex, hostApplicationMetadata)); } private final void readInBeforeStaticOperationEvent(final ByteBuffer buffer) { @@ -480,22 +510,33 @@ class TCPReaderOneClient extends Thread { hostApplicationMetadata)); } - private final void readInSentRemoteCallEvent(final ByteBuffer buffer) { + private final void readInBeforeSentRemoteCallEvent(final ByteBuffer buffer) { final long timestamp = buffer.getLong(); final long traceId = buffer.getLong(); final int orderIndex = buffer.getInt(); - final int destinationId = buffer.getInt(); + final int technologyId = buffer.getInt(); try { - putInRingBuffer(new SentRemoteCallRecord(timestamp, - stringRegistry.getStringFromId(destinationId), traceId, orderIndex, + putInRingBuffer(new BeforeSentRemoteCallRecord(timestamp, + stringRegistry.getStringFromId(technologyId), traceId, orderIndex, hostApplicationMetadata)); } catch (final IdNotAvailableException e) { - putInWaitingMessages(buffer, SentRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); + putInWaitingMessages(buffer, + BeforeSentRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); } } - private final void readInUnknownReceivedRemoteCallEvent(final ByteBuffer buffer) { + private final void readInAfterSentRemoteCallEvent(final ByteBuffer buffer) { + final long timestamp = buffer.getLong(); + final long traceId = buffer.getLong(); + final int orderIndex = buffer.getInt(); + + putInRingBuffer(new AfterSentRemoteCallRecord(timestamp, traceId, orderIndex, + hostApplicationMetadata)); + + } + + private final void readInBeforeUnknownReceivedRemoteCallEvent(final ByteBuffer buffer) { final long timestamp = buffer.getLong(); final long traceId = buffer.getLong(); final int orderIndex = buffer.getInt(); @@ -504,16 +545,35 @@ class TCPReaderOneClient extends Thread { final int destionationId = buffer.getInt(); try { - putInRingBuffer(new UnknownReceivedRemoteCallRecord(timestamp, + putInRingBuffer(new BeforeUnknownReceivedRemoteCallRecord(timestamp, stringRegistry.getStringFromId(senderId), stringRegistry.getStringFromId(destionationId), traceId, orderIndex, hostApplicationMetadata)); } catch (final IdNotAvailableException e) { putInWaitingMessages(buffer, - UnknownReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); + BeforeUnknownReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); } } + private final void readInAfterUnknownReceivedRemoteCallEvent(final ByteBuffer buffer) { + final long timestamp = buffer.getLong(); + final long traceId = buffer.getLong(); + final int orderIndex = buffer.getInt(); + + putInRingBuffer(new AfterUnknownReceivedRemoteCallRecord(timestamp, traceId, orderIndex, + hostApplicationMetadata)); + + } + + private final void readInAfterReceivedRemoteCallEvent(final ByteBuffer buffer) { + final long timestamp = buffer.getLong(); + final long traceId = buffer.getLong(); + final int orderIndex = buffer.getInt(); + + putInRingBuffer(new AfterReceivedRemoteCallRecord(timestamp, traceId, orderIndex, + hostApplicationMetadata)); + } + private final void putInWaitingMessages(final ByteBuffer buffer, final int length) { final byte[] message = new byte[length]; buffer.position(buffer.position() - length); @@ -553,8 +613,8 @@ class TCPReaderOneClient extends Thread { case AfterConstructorEventRecord.CLAZZ_ID: readInAfterConstructorEvent(buffer); break; - case ReceivedRemoteCallRecord.CLAZZ_ID: - readInReceivedRemoteCallEvent(buffer); + case BeforeReceivedRemoteCallRecord.CLAZZ_ID: + readInBeforeReceivedRemoteCallEvent(buffer); break; case BeforeStaticOperationEventRecord.CLAZZ_ID: readInBeforeStaticOperationEvent(buffer); @@ -565,11 +625,20 @@ class TCPReaderOneClient extends Thread { case AfterStaticOperationEventRecord.CLAZZ_ID: readInAfterStaticOperationEvent(buffer); break; - case SentRemoteCallRecord.CLAZZ_ID: - readInSentRemoteCallEvent(buffer); + case BeforeSentRemoteCallRecord.CLAZZ_ID: + readInBeforeSentRemoteCallEvent(buffer); + break; + case AfterSentRemoteCallRecord.CLAZZ_ID: + readInAfterSentRemoteCallEvent(buffer); + break; + case BeforeUnknownReceivedRemoteCallRecord.CLAZZ_ID: + readInBeforeUnknownReceivedRemoteCallEvent(buffer); + break; + case AfterUnknownReceivedRemoteCallRecord.CLAZZ_ID: + readInAfterUnknownReceivedRemoteCallEvent(buffer); break; - case UnknownReceivedRemoteCallRecord.CLAZZ_ID: - readInUnknownReceivedRemoteCallEvent(buffer); + case AfterReceivedRemoteCallRecord.CLAZZ_ID: + readInAfterReceivedRemoteCallEvent(buffer); break; default: break;