Skip to content
Snippets Groups Projects
Commit f2622f83 authored by Florian Fittkau's avatar Florian Fittkau
Browse files

minor opti

parent a8007685
No related branches found
No related tags found
No related merge requests found
package explorviz.hpc_monitoring.reader;
import java.io.IOException;
import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.util.ArrayList;
......@@ -68,51 +67,80 @@ public class TCPReaderThread extends Thread implements IPeriodicTimeSignalReceiv
private final void messagesfromByteArray(final ByteBuffer buffer) {
while (buffer.remaining() > 0) {
buffer.mark();
try {
final byte clazzId = buffer.get();
switch (clazzId) {
case HostApplicationMetaData.CLAZZ_ID: {
if (buffer.remaining() >= (HostApplicationMetaData.BYTE_LENGTH_WITH_CLAZZ_ID - 1)) {
readInTraceMetadata(buffer);
} else {
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
break;
}
case BeforeOperationEvent.CLAZZ_ID: {
if (buffer.remaining() >= (BeforeOperationEvent.BYTE_LENGTH_WITH_CLAZZ_ID - 1)) {
readInBeforeOperationEvent(buffer);
} else {
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
break;
}
case AfterFailedOperationEvent.CLAZZ_ID: {
if (buffer.remaining() >= (AfterFailedOperationEvent.BYTE_LENGTH_WITH_CLAZZ_ID - 1)) {
readInAfterFailedOperationEvent(buffer);
} else {
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
break;
}
case AfterOperationEvent.CLAZZ_ID: {
if (buffer.remaining() >= (AfterOperationEvent.BYTE_LENGTH_WITH_CLAZZ_ID - 1)) {
readInAfterOperationEvent(buffer);
} else {
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
break;
}
case StringRegistryRecord.CLAZZ_ID: {
final int mapId = buffer.getInt();
final int stringLength = buffer.getInt();
int mapId = 0;
int stringLength = 0;
if (buffer.remaining() >= 8) {
mapId = buffer.getInt();
stringLength = buffer.getInt();
} else {
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
if (buffer.remaining() >= stringLength) {
final byte[] stringByteArray = new byte[stringLength];
buffer.get(stringByteArray);
addToRegistry(mapId, new String(stringByteArray));
} else {
buffer.position(buffer.position() - 9);
buffer.compact();
return;
}
break;
}
default: {
System.out.println("unknown class id " + clazzId + " at offset "
+ (buffer.position() - 4));
buffer.reset();
buffer.compact();
buffer.clear();
return;
}
}
} catch (final BufferUnderflowException e) {
buffer.reset();
buffer.compact();
return;
}
}
buffer.clear();
......@@ -230,12 +258,12 @@ public class TCPReaderThread extends Thread implements IPeriodicTimeSignalReceiv
private final void putInRingBuffer(final IRecord message) {
counter.inputObjects(message);
synchronized (this) { // TODO remove
outputBuffer[outputBufferIndex++] = message;
if (outputBufferIndex == OUTPUT_MESSAGE_BUFFER_SIZE) {
flushOutputBuffer();
}
}
// synchronized (this) { // TODO remove
// outputBuffer[outputBufferIndex++] = message;
// if (outputBufferIndex == OUTPUT_MESSAGE_BUFFER_SIZE) {
// flushOutputBuffer();
// }
// }
}
private void flushOutputBuffer() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment