diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java index f94a158e567142a2a430789ea6fcd7ed5a83bf32..4264a752a1909260698f7810d06b4143843aadc1 100644 --- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java +++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java @@ -21,7 +21,9 @@ 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.RemoteCallBridgeRecord; +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.statics.AfterFailedStaticOperationEventRecord; import explorviz.live_trace_processing.record.event.statics.AfterStaticOperationEventRecord; import explorviz.live_trace_processing.record.event.statics.BeforeStaticOperationEventRecord; @@ -141,6 +143,8 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec stringRegistry.putStringRecord(mapId, new String(stringByteArray)); + System.out.println(new String(stringByteArray)); + checkWaitingMessages(); } else { buffer.position(buffer.position() - 9); @@ -220,9 +224,9 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec buffer.compact(); return; } - case RemoteCallBridgeRecord.CLAZZ_ID: { - if (buffer.remaining() >= RemoteCallBridgeRecord.COMPRESSED_BYTE_LENGTH) { - readInRemoteCallBridgeEvent(buffer); + case ReceivedRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= ReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInReceivedRemoteCallEvent(buffer); break; } buffer.position(buffer.position() - 1); @@ -256,6 +260,24 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec buffer.compact(); return; } + case SentRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= SentRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInSentRemoteCallEvent(buffer); + break; + } + buffer.position(buffer.position() - 1); + buffer.compact(); + return; + } + case UnknownReceivedRemoteCallRecord.CLAZZ_ID: { + if (buffer.remaining() >= UnknownReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH) { + readInUnknownReceivedRemoteCallEvent(buffer); + break; + } + buffer.position(buffer.position() - 1); + buffer.compact(); + return; + } default: { System.out.println("unknown class id " + clazzId + " at offset " + (buffer.position() - 1)); @@ -375,7 +397,7 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec hostApplicationMetadata)); } - private final void readInRemoteCallBridgeEvent(final ByteBuffer buffer) { + private final void readInReceivedRemoteCallEvent(final ByteBuffer buffer) { final int callerHost = buffer.getInt(); final int callerApplication = buffer.getInt(); final long callerTraceId = buffer.getLong(); @@ -386,13 +408,13 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec final int orderIndex = buffer.getInt(); try { - putInRingBuffer(new RemoteCallBridgeRecord(timestamp, + putInRingBuffer(new ReceivedRemoteCallRecord(timestamp, stringRegistry.getStringFromId(callerHost), stringRegistry.getStringFromId(callerApplication), callerTraceId, callerOrderIndex, traceId, orderIndex, hostApplicationMetadata)); } catch (final IdNotAvailableException e) { putInWaitingMessages(buffer, - RemoteCallBridgeRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); + ReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); } } @@ -439,6 +461,40 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec hostApplicationMetadata)); } + private final void readInSentRemoteCallEvent(final ByteBuffer buffer) { + final long timestamp = buffer.getLong(); + final long traceId = buffer.getLong(); + final int orderIndex = buffer.getInt(); + final int destinationId = 0; + + try { + putInRingBuffer(new SentRemoteCallRecord(timestamp, + stringRegistry.getStringFromId(destinationId), traceId, orderIndex, + hostApplicationMetadata)); + } catch (final IdNotAvailableException e) { + putInWaitingMessages(buffer, SentRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); + } + } + + private final void readInUnknownReceivedRemoteCallEvent(final ByteBuffer buffer) { + final long timestamp = buffer.getLong(); + final long traceId = buffer.getLong(); + final int orderIndex = buffer.getInt(); + + final int senderId = buffer.getInt(); + final int destionationId = buffer.getInt(); + + try { + putInRingBuffer(new UnknownReceivedRemoteCallRecord(timestamp, + stringRegistry.getStringFromId(senderId), + stringRegistry.getStringFromId(destionationId), traceId, orderIndex, + hostApplicationMetadata)); + } catch (final IdNotAvailableException e) { + putInWaitingMessages(buffer, + UnknownReceivedRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID); + } + } + private final void putInWaitingMessages(final ByteBuffer buffer, final int length) { final byte[] message = new byte[length]; buffer.position(buffer.position() - length); @@ -478,8 +534,8 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec case AfterConstructorEventRecord.CLAZZ_ID: readInAfterConstructorEvent(buffer); break; - case RemoteCallBridgeRecord.CLAZZ_ID: - readInRemoteCallBridgeEvent(buffer); + case ReceivedRemoteCallRecord.CLAZZ_ID: + readInReceivedRemoteCallEvent(buffer); break; case BeforeStaticOperationEventRecord.CLAZZ_ID: readInBeforeStaticOperationEvent(buffer); @@ -490,6 +546,12 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec case AfterStaticOperationEventRecord.CLAZZ_ID: readInAfterStaticOperationEvent(buffer); break; + case SentRemoteCallRecord.CLAZZ_ID: + readInSentRemoteCallEvent(buffer); + break; + case UnknownReceivedRemoteCallRecord.CLAZZ_ID: + readInUnknownReceivedRemoteCallEvent(buffer); + break; default: break; }