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

moved large parts to common

parent 107d0a7f
No related branches found
No related tags found
No related merge requests found
Showing
with 102 additions and 647 deletions
...@@ -8,5 +8,6 @@ ...@@ -8,5 +8,6 @@
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="lib" path="lib/trove-3.0.3.jar"/> <classpathentry kind="lib" path="lib/trove-3.0.3.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/common-monitoring"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>
package explorviz.hpc_monitoring.byteaccess;
import java.lang.reflect.Field;
import sun.misc.Unsafe;
public class UnsafeBits {
private static final Unsafe unsafe;
static {
try {
final Field field = Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
unsafe = (Unsafe) field.get(null);
}
catch (final Exception e) {
throw new RuntimeException(e);
}
}
private static final long byteArrayOffset = unsafe.arrayBaseOffset(byte[].class);
public static final void putInt(final byte[] buffer, final int pos,
final int value) {
unsafe.putInt(buffer, byteArrayOffset + pos, value);
}
public static final int getInt(final byte[] buffer, final int pos) {
return unsafe.getInt(buffer, byteArrayOffset + pos);
}
public static final void putLong(final byte[] buffer, final int pos,
final long value) {
unsafe.putLong(buffer, byteArrayOffset + pos, value);
}
public static final long getLong(final byte[] buffer, final int pos) {
return unsafe.getLong(buffer, byteArrayOffset + pos);
}
}
\ No newline at end of file
...@@ -3,8 +3,10 @@ package explorviz.hpc_monitoring.connector; ...@@ -3,8 +3,10 @@ package explorviz.hpc_monitoring.connector;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.IOException; import java.io.IOException;
import java.net.Socket; import java.net.Socket;
import com.lmax.disruptor.EventHandler; import com.lmax.disruptor.EventHandler;
import explorviz.hpc_monitoring.reader.ByteArrayEvent;
import explorviz.hpc_monitoring.disruptor.ByteArrayEvent;
public class TCPConnector implements EventHandler<ByteArrayEvent> { public class TCPConnector implements EventHandler<ByteArrayEvent> {
private static final int MESSAGE_BUFFER_SIZE = 65536; private static final int MESSAGE_BUFFER_SIZE = 65536;
...@@ -22,8 +24,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> { ...@@ -22,8 +24,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> {
try { try {
connect(providerUrl); connect(providerUrl);
} } catch (final IOException e) {
catch (final IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
...@@ -40,8 +41,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> { ...@@ -40,8 +41,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> {
// if (endOfBatch) { // if (endOfBatch) {
// bufferedOutputStream.flush(); // bufferedOutputStream.flush();
// } // }
} } catch (final IOException e) {
catch (final IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
...@@ -54,8 +54,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> { ...@@ -54,8 +54,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> {
if (socket.isConnected()) { if (socket.isConnected()) {
try { try {
socket.close(); socket.close();
} } catch (final IOException e) {
catch (final IOException e) {
System.out.println(e.toString()); System.out.println(e.toString());
} }
} }
...@@ -69,8 +68,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> { ...@@ -69,8 +68,7 @@ public class TCPConnector implements EventHandler<ByteArrayEvent> {
connect(provider); connect(provider);
providerUrl = provider; providerUrl = provider;
notifyAll(); notifyAll();
} } catch (final IOException e) {
catch (final IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
......
package explorviz.hpc_monitoring.filter.counting;
public final class CountingThroughputFilter {
private volatile long firstIntervalStart = -1;
private final long intervalSize;
private int currentCountForCurrentInterval = 0;
private volatile long firstTimestampInCurrentInterval = -1;
private volatile long lastTimestampInCurrentInterval = -1;
private final String beforeOut;
public CountingThroughputFilter(final String beforeOut) {
this.beforeOut = beforeOut;
intervalSize = 1 * 1000 * 1000 * 1000;
}
private void processEvent(final Object event, final long currentTime,
final int increment) {
final long startOfTimestampsInterval = computeFirstTimestampInInterval(currentTime);
final long endOfTimestampsInterval = computeLastTimestampInInterval(currentTime);
if (endOfTimestampsInterval > lastTimestampInCurrentInterval) {
if (firstTimestampInCurrentInterval >= 0) {
final long currentCount = currentCountForCurrentInterval;
System.out.println(beforeOut + ": " + currentCount);
}
firstTimestampInCurrentInterval = startOfTimestampsInterval;
lastTimestampInCurrentInterval = endOfTimestampsInterval;
currentCountForCurrentInterval = 0;
}
currentCountForCurrentInterval += increment;
}
public final void inputObjects(final Object object) {
processEvent(object, System.currentTimeMillis() * 1000 * 1000, 1);
}
public final void inputObjectsCount(final int object) {
processEvent(object, System.currentTimeMillis() * 1000 * 1000, object);
}
private long computeFirstTimestampInInterval(final long timestamp) {
if (firstIntervalStart == -1) {
firstIntervalStart = timestamp;
}
return ((timestamp / intervalSize) * intervalSize);
}
private long computeLastTimestampInInterval(final long timestamp) {
return ((((timestamp / intervalSize) + 1) * intervalSize) - 1);
}
}
...@@ -7,10 +7,10 @@ import com.lmax.disruptor.EventHandler; ...@@ -7,10 +7,10 @@ import com.lmax.disruptor.EventHandler;
import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.dsl.Disruptor; import com.lmax.disruptor.dsl.Disruptor;
import explorviz.hpc_monitoring.disruptor.RecordEvent;
import explorviz.hpc_monitoring.filter.counting.CountingThroughputFilter; import explorviz.hpc_monitoring.filter.counting.CountingThroughputFilter;
import explorviz.hpc_monitoring.filter.reduction.TracePatternSummarizationFilter; import explorviz.hpc_monitoring.filter.reduction.TracePatternSummarizationFilter;
import explorviz.hpc_monitoring.reader.IPeriodicTimeSignalReceiver; import explorviz.hpc_monitoring.reader.IPeriodicTimeSignalReceiver;
import explorviz.hpc_monitoring.reader.RecordEvent;
import explorviz.hpc_monitoring.reader.TimeReader; import explorviz.hpc_monitoring.reader.TimeReader;
import explorviz.hpc_monitoring.record.IRecord; import explorviz.hpc_monitoring.record.IRecord;
import explorviz.hpc_monitoring.record.Trace; import explorviz.hpc_monitoring.record.Trace;
...@@ -71,8 +71,10 @@ public final class TraceReconstructionFilter implements ...@@ -71,8 +71,10 @@ public final class TraceReconstructionFilter implements
} }
private void sendOutInvalidTrace(final Trace trace) { private void sendOutInvalidTrace(final Trace trace) {
counter.inputObjects(trace); // counter.inputObjects(trace);
putInRingBuffer(trace); // TODO // putInRingBuffer(trace); // TODO
System.out.println("Invalid trace: "
+ trace.getTraceMetadata().getTraceId());
} }
private void putInRingBuffer(final IRecord record) { private void putInRingBuffer(final IRecord record) {
......
...@@ -12,9 +12,9 @@ import com.lmax.disruptor.EventHandler; ...@@ -12,9 +12,9 @@ import com.lmax.disruptor.EventHandler;
import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.dsl.Disruptor; import com.lmax.disruptor.dsl.Disruptor;
import explorviz.hpc_monitoring.disruptor.RecordEvent;
import explorviz.hpc_monitoring.filter.counting.CountingThroughputFilter; import explorviz.hpc_monitoring.filter.counting.CountingThroughputFilter;
import explorviz.hpc_monitoring.reader.IPeriodicTimeSignalReceiver; import explorviz.hpc_monitoring.reader.IPeriodicTimeSignalReceiver;
import explorviz.hpc_monitoring.reader.RecordEvent;
import explorviz.hpc_monitoring.reader.TimeReader; import explorviz.hpc_monitoring.reader.TimeReader;
import explorviz.hpc_monitoring.record.IRecord; import explorviz.hpc_monitoring.record.IRecord;
import explorviz.hpc_monitoring.record.Trace; import explorviz.hpc_monitoring.record.Trace;
......
package explorviz.hpc_monitoring.reader;
import com.lmax.disruptor.EventFactory;
/**
* WARNING: This is a mutable object which will be recycled by the RingBuffer.
* You must take a copy of data it holds
* before the framework recycles it.
*/
public final class ByteArrayEvent {
private byte[] value;
private int length;
public final byte[] getValue() {
return value;
}
public void setValue(final byte[] value) {
this.value = value;
}
public final int getLength() {
return length;
}
public void setLength(final int length) {
this.length = length;
}
public final static EventFactory<ByteArrayEvent> EVENT_FACTORY = new EventFactory<ByteArrayEvent>() {
@Override
public ByteArrayEvent newInstance() {
return new ByteArrayEvent();
}
};
}
\ No newline at end of file
package explorviz.hpc_monitoring.reader;
public interface IPeriodicTimeSignalReceiver {
void periodicTimeSignal(long timestamp);
}
...@@ -10,6 +10,8 @@ import com.lmax.disruptor.RingBuffer; ...@@ -10,6 +10,8 @@ import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.dsl.Disruptor; import com.lmax.disruptor.dsl.Disruptor;
import explorviz.hpc_monitoring.byteaccess.UnsafeBits; import explorviz.hpc_monitoring.byteaccess.UnsafeBits;
import explorviz.hpc_monitoring.disruptor.ByteArrayEvent;
import explorviz.hpc_monitoring.disruptor.RecordEvent;
import explorviz.hpc_monitoring.filter.counting.CountingThroughputFilter; import explorviz.hpc_monitoring.filter.counting.CountingThroughputFilter;
import explorviz.hpc_monitoring.filter.reconstruction.TraceReconstructionFilter; import explorviz.hpc_monitoring.filter.reconstruction.TraceReconstructionFilter;
import explorviz.hpc_monitoring.record.IRecord; import explorviz.hpc_monitoring.record.IRecord;
...@@ -30,7 +32,7 @@ public class MessageDistributer implements EventHandler<ByteArrayEvent> { ...@@ -30,7 +32,7 @@ public class MessageDistributer implements EventHandler<ByteArrayEvent> {
private final List<byte[]> waitingForStringMessages = new ArrayList<byte[]>( private final List<byte[]> waitingForStringMessages = new ArrayList<byte[]>(
1024); 1024);
private final byte[] unreadBytes = null; private byte[] unreadBytes = null;
private final RingBuffer<RecordEvent> ringBuffer; private final RingBuffer<RecordEvent> ringBuffer;
...@@ -50,26 +52,26 @@ public class MessageDistributer implements EventHandler<ByteArrayEvent> { ...@@ -50,26 +52,26 @@ public class MessageDistributer implements EventHandler<ByteArrayEvent> {
@Override @Override
public void onEvent(final ByteArrayEvent event, final long sequence, public void onEvent(final ByteArrayEvent event, final long sequence,
final boolean endOfBatch) throws Exception { final boolean endOfBatch) throws Exception {
counter.inputObjectsCount(event.getLength() / 28); // counter.inputObjectsCount(event.getLength());
// final byte[] received = event.getValue(); final byte[] received = event.getValue();
// final int receivedLength = event.getLength(); final int receivedLength = event.getLength();
//
// byte[] messages = received; byte[] messages = received;
// int messagesLength = receivedLength; int messagesLength = receivedLength;
//
// if (unreadBytes != null) { if (unreadBytes != null) {
// final int unreadBytesLength = unreadBytes.length; final int unreadBytesLength = unreadBytes.length;
//
// messagesLength += unreadBytesLength; messagesLength += unreadBytesLength;
// messages = new byte[messagesLength]; messages = new byte[messagesLength];
//
// System.arraycopy(unreadBytes, 0, messages, 0, unreadBytesLength); System.arraycopy(unreadBytes, 0, messages, 0, unreadBytesLength);
// System.arraycopy(received, 0, messages, unreadBytesLength, System.arraycopy(received, 0, messages, unreadBytesLength,
// receivedLength); receivedLength);
// } }
//
// unreadBytes = messagesfromByteArray(messages, messagesLength); unreadBytes = messagesfromByteArray(messages, messagesLength);
} }
private byte[] messagesfromByteArray(final byte[] b, final int readSize) { private byte[] messagesfromByteArray(final byte[] b, final int readSize) {
......
package explorviz.hpc_monitoring.reader;
import com.lmax.disruptor.EventFactory;
import explorviz.hpc_monitoring.record.IRecord;
/**
* WARNING: This is a mutable object which will be recycled by the RingBuffer.
* You must take a copy of data it holds
* before the framework recycles it.
*/
public final class RecordEvent {
private IRecord value;
public final IRecord getValue() {
return value;
}
public void setValue(final IRecord value) {
this.value = value;
}
public final static EventFactory<RecordEvent> EVENT_FACTORY = new EventFactory<RecordEvent>() {
@Override
public RecordEvent newInstance() {
return new RecordEvent();
}
};
}
\ No newline at end of file
...@@ -12,8 +12,11 @@ import com.lmax.disruptor.EventHandler; ...@@ -12,8 +12,11 @@ import com.lmax.disruptor.EventHandler;
import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.dsl.Disruptor; import com.lmax.disruptor.dsl.Disruptor;
import explorviz.hpc_monitoring.disruptor.ByteArrayEvent;
import explorviz.hpc_monitoring.disruptor.RecordEvent;
public final class TCPReader { public final class TCPReader {
private static final int MESSAGE_BUFFER_SIZE = 65536 * 2; private static final int MESSAGE_BUFFER_SIZE = 65536;
private final int listeningPort; private final int listeningPort;
...@@ -29,7 +32,7 @@ public final class TCPReader { ...@@ -29,7 +32,7 @@ public final class TCPReader {
throws IllegalArgumentException { throws IllegalArgumentException {
this.listeningPort = listeningPort; this.listeningPort = listeningPort;
buffer = ByteBuffer.allocate(MESSAGE_BUFFER_SIZE); buffer = ByteBuffer.allocateDirect(MESSAGE_BUFFER_SIZE);
final ExecutorService exec = Executors.newCachedThreadPool(); final ExecutorService exec = Executors.newCachedThreadPool();
final Disruptor<ByteArrayEvent> disruptor = new Disruptor<ByteArrayEvent>( final Disruptor<ByteArrayEvent> disruptor = new Disruptor<ByteArrayEvent>(
...@@ -50,10 +53,10 @@ public final class TCPReader { ...@@ -50,10 +53,10 @@ public final class TCPReader {
final SocketChannel socketChannel = serversocket.accept(); final SocketChannel socketChannel = serversocket.accept();
int readBytes = 0; int readBytes = 0;
while ((readBytes = socketChannel.read(buffer)) != -1) { while ((readBytes = socketChannel.read(buffer)) != -1) {
// final byte[] messages = new byte[MESSAGE_BUFFER_SIZE]; final byte[] messages = new byte[readBytes];
// System.arraycopy(buffer.array(), 0, messages, 0, buffer.flip();
// buffer.position()); buffer.get(messages, 0, readBytes);
putInRingBuffer(null, readBytes); putInRingBuffer(messages, readBytes);
buffer.clear(); buffer.clear();
} }
......
package explorviz.hpc_monitoring.reader;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public final class TimeReader {
private final long period;
private final ScheduledExecutorService executorService;
private final IPeriodicTimeSignalReceiver receiver;
public TimeReader(final long periodInMilliSec,
final IPeriodicTimeSignalReceiver receiver) {
period = periodInMilliSec;
this.receiver = receiver;
executorService = new ScheduledThreadPoolExecutor(1);
}
public void start() {
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
sendTimestampEvent();
}
}, 0, period, TimeUnit.MILLISECONDS);
}
protected void sendTimestampEvent() {
final long timestamp = System.nanoTime();
receiver.periodicTimeSignal(timestamp);
}
}
package explorviz.hpc_monitoring.record;
public interface IRecord {
}
/***************************************************************************
* Copyright 2013 Kieker Project (http://kieker-monitoring.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package explorviz.hpc_monitoring.record;
import java.io.Serializable;
/**
* Provides methods to calculate the minimum, maximum, average and the standard
* deviation of numerical data.
*
* @author Florian Biss
*
* @since 1.8
*/
public final class RuntimeStatisticInformation implements Serializable {
private static final long serialVersionUID = -1628273045707598143L;
private int count = 0;
private long min = Long.MAX_VALUE;
private long max = Long.MIN_VALUE;
private double sum;
private double squareSum;
public RuntimeStatisticInformation(final long runtime) {
set(runtime);
}
public int getCount() {
return count;
}
public long getMin() {
return min;
}
public long getMax() {
return max;
}
public long getAvg() {
if (count > 0) {
return (long) (sum / count);
} else {
return -1;
}
}
public long getStandardDeviation() {
if (count <= 2) {
return -1;
} else {
final double variance = (squareSum - ((sum * sum) / count))
/ (count - 1);
return (long) Math.sqrt(variance);
}
}
public double getSum() {
return sum;
}
public double getSquareSum() {
return squareSum;
}
public void insert(final long data) {
count++;
final double dataDouble = data;
sum += dataDouble;
squareSum += dataDouble * dataDouble;
min = Math.min(data, min);
max = Math.max(data, max);
}
public void set(final long data) {
count = 1;
// final double dataDouble = data;
// sum = dataDouble;
// squareSum = dataDouble * dataDouble;
// max = data;
// min = data;
}
public void merge(final RuntimeStatisticInformation statistics) {
count += statistics.getCount();
// sum += statistics.getSum();
// squareSum += statistics.getSquareSum();
// min = Math.min(statistics.getMin(), min);
// max = Math.max(statistics.getMax(), max);
}
@Override
public String toString() {
return count + ":" + min + ":" + max + ":" + sum + ":" + squareSum;
}
}
package explorviz.hpc_monitoring.record;
import java.io.Serializable;
import java.util.Arrays;
import explorviz.hpc_monitoring.record.events.AbstractOperationEvent;
public final class Trace implements Serializable, IRecord {
private static final long serialVersionUID = 8589405631073291022L;
private final TraceMetadata traceMetadata;
private final AbstractOperationEvent[] traceEvents;
private final RuntimeStatisticInformation runtimeInformation;
public Trace(final TraceMetadata traceMetadata,
final AbstractOperationEvent[] traceEvents) {
this.traceMetadata = traceMetadata;
this.traceEvents = traceEvents;
runtimeInformation = new RuntimeStatisticInformation(1); // TODO
}
public TraceMetadata getTraceMetadata() {
return traceMetadata;
}
public AbstractOperationEvent[] getTraceEvents() {
return traceEvents;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder(64);
sb.append(super.toString());
sb.append("\n\tTrace: ");
sb.append(traceMetadata);
for (final AbstractOperationEvent traceEvent : traceEvents) {
sb.append("\n\t");
sb.append(traceEvent.getClass().getSimpleName());
sb.append(": ");
sb.append(traceEvent);
}
sb.append("\n\t");
sb.append(runtimeInformation.getClass().getSimpleName());
sb.append(": ");
sb.append(runtimeInformation);
sb.append('\n');
return sb.toString();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result)
+ ((traceMetadata == null) ? 0 : traceMetadata.hashCode()); // NOCS
// (?:)
result = (prime * result) + Arrays.hashCode(traceEvents);
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (this.getClass() != obj.getClass()) {
return false;
}
final Trace other = (Trace) obj;
if (traceMetadata == null) {
if (other.traceMetadata != null) {
return false;
}
}
else if (!traceMetadata.equals(other.traceMetadata)) {
return false;
}
if (!Arrays.equals(traceEvents, other.traceEvents)) {
return false;
}
return true;
}
public RuntimeStatisticInformation getRuntime() {
return runtimeInformation;
}
}
package explorviz.hpc_monitoring.record;
public class TraceMetadata implements IRecord {
public static final int BYTE_LENGTH = 8 + 4 + 8 + 4 + 4;
public static final int CLAZZ_ID = 0;
private final long traceId;
private final String hostname;
private final long parentTraceId;
private final int parentOrderId;
private final String application;
public TraceMetadata(final long traceId, final String hostname,
final long parentTraceId, final int parentOrderId,
final String application) {
this.traceId = traceId;
this.hostname = hostname;
this.parentTraceId = parentTraceId;
this.parentOrderId = parentOrderId;
this.application = application;
}
public long getLoggingTimestamp() {
throw new UnsupportedOperationException();
}
public long getTraceId() {
return traceId;
}
public String getHostname() {
return hostname;
}
public long getParentTraceId() {
return parentTraceId;
}
public int getParentOrderId() {
return parentOrderId;
}
public String getApplication() {
return application;
}
}
package explorviz.hpc_monitoring.record.events;
import explorviz.hpc_monitoring.record.IRecord;
import explorviz.hpc_monitoring.record.RuntimeStatisticInformation;
public class AbstractOperationEvent implements IRecord {
private final long timestamp;
private final long traceId;
private final int orderIndex;
private final String operationSignature;
private final RuntimeStatisticInformation runtimeStatisticInformation;
public AbstractOperationEvent(final long timestamp, final long traceId,
final int orderIndex, final String operationSignature) {
super();
this.timestamp = timestamp;
this.traceId = traceId;
this.orderIndex = orderIndex;
this.operationSignature = operationSignature;
runtimeStatisticInformation = new RuntimeStatisticInformation(timestamp);
}
public long getLoggingTimestamp() {
return timestamp;
}
public long getTraceId() {
return traceId;
}
public int getOrderIndex() {
return orderIndex;
}
public String getOperationSignature() {
return operationSignature;
}
public RuntimeStatisticInformation getRuntime() {
return runtimeStatisticInformation;
}
}
package explorviz.hpc_monitoring.record.events.normal;
import explorviz.hpc_monitoring.record.events.AbstractOperationEvent;
public class AfterFailedOperationEvent extends AbstractOperationEvent {
public static final int BYTE_LENGTH = 8 + 8 + 4 + 4 + 4;
public static final int CLAZZ_ID = 2;
private final String cause;
public AfterFailedOperationEvent(final long timestamp, final long traceId,
final int orderIndex, final String operationSignature,
final String cause) {
super(timestamp, traceId, orderIndex, operationSignature);
this.cause = cause;
}
public String getCause() {
return cause;
}
}
package explorviz.hpc_monitoring.record.events.normal;
import explorviz.hpc_monitoring.record.events.AbstractOperationEvent;
public class AfterOperationEvent extends AbstractOperationEvent {
public static final int BYTE_LENGTH = 8 + 8 + 4 + 4;
public static final int CLAZZ_ID = 3;
public AfterOperationEvent(final long timestamp, final long traceId,
final int orderIndex, final String operationSignature) {
super(timestamp, traceId, orderIndex, operationSignature);
}
}
package explorviz.hpc_monitoring.record.events.normal;
import explorviz.hpc_monitoring.record.events.AbstractOperationEvent;
public class BeforeOperationEvent extends AbstractOperationEvent {
public static final int BYTE_LENGTH = 8 + 8 + 4 + 4;
public static final int CLAZZ_ID = 1;
public BeforeOperationEvent(final long timestamp, final long traceId,
final int orderIndex, final String operationSignature) {
super(timestamp, traceId, orderIndex, operationSignature);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment