public MonitorEventEntry newInstance() { return new MonitorEventEntry(capacity, monitor); } }
private void send(MonitorLevel level, long timestamp, String template, Object[] args) { MonitorEventEntry entry = null; try { long start = System.nanoTime(); entry = router.get(); entry.setDestinationIndex(destinationIndex); entry.setTimestampNanos(start); entry.setTemplate(template); entry.setParse(true); if (args != null) { for (int i = 0; i < args.length; i++) { Object arg = args[i]; entry.getEntries()[i].setObjectValue(arg); } } entry.setLevel(level); entry.setLimit(args == null ? 0 : args.length); entry.setEntryTimestamp(timestamp); } finally { if (entry != null) { router.publish(entry); } } }
public MonitorEventEntry get() { RingBuffer<MonitorEventEntry> ringBuffer = disruptor.getRingBuffer(); long sequence = ringBuffer.next(); MonitorEventEntry entry = ringBuffer.get(sequence); entry.getBuffer().clear(); for (ParameterEntry parameterEntry : entry.getEntries()) { parameterEntry.reset(); } entry.setSequence(sequence); return entry; }
private int writeParameter(ParameterEntry parameterEntry, ResizableByteBuffer buffer) { int count = 0; switch (parameterEntry.getSlot()) { case SHORT: count = count + IntWriter.write(parameterEntry.getShortValue(), buffer); break; case INT: count = count + IntWriter.write(parameterEntry.getIntValue(), buffer); break; case LONG: count = count + LongWriter.write(parameterEntry.getLongValue(), buffer); break; case DOUBLE: count = count + DoubleWriter.write(parameterEntry.getDoubleValue(), buffer); break; case FLOAT: count = count + FloatWriter.write(parameterEntry.getFloatValue(), buffer); break; case CHAR: count = count + CharWriter.write(parameterEntry.getCharValue(), buffer); break; case BOOLEAN: count = count + BooleanWriter.write(parameterEntry.getBooleanValue(), buffer); break; case BYTE: count = count + ByteWriter.write(parameterEntry.getByteValue(), buffer); break; case OBJECT: count = count + ObjectWriter.write(parameterEntry.getObjectValue(Object.class), buffer); break;
public int writeTemplate(MonitorEventEntry entry) { String template = entry.getTemplate(); if (template == null) { return 0; ResizableByteBuffer buffer = entry.getBuffer(); int bytesWritten = 0; int counter = 0; ParameterEntry[] entries = entry.getEntries(); for (int i = 0; i < template.length(); i++) { char current = template.charAt(i); if (entry.isParse() && '{' == current) { if (counter > entry.getLimit()) { throw new ServiceRuntimeException("Monitor message contains more parameters than are supplied by the method interface: " + template); if (counter < entry.getLimit()) { ParameterEntry last = entries[entry.getLimit() - 1]; if (ParameterEntry.Slot.OBJECT == last.getSlot() && last.getObjectValue(Object.class) instanceof Throwable) { bytesWritten = bytesWritten + ObjectWriter.write(last.getObjectValue(Object.class), buffer);
public void write(MonitorEventEntry entry) throws IOException { ByteBuffer buffer = entry.getBuffer(); MonitorLevel level = entry.getLevel(); long entryTimestamp = entry.getEntryTimestamp(); int count = eventWriter.writePrefix(level, entryTimestamp, buffer); count = count + eventWriter.writeTemplate(entry); buffer.put(NEWLINE); count++; buffer.limit(count); write(buffer); }
public void onEvent(MonitorEventEntry entry, long sequence, boolean endOfBatch) throws Exception { entry.setEndOfBatch(endOfBatch); registry.write(entry); // if (counter >= MIN) { // long time = System.nanoTime() - entry.getTimestampNanos(); // elapsedTime = elapsedTime + time; // } // counter++; // if (counter == MAX) { // System.out.println("Time last event: " + (System.nanoTime() - entry.getTimestampNanos())); // System.out.println("Elapsed: " + elapsedTime); // System.out.println("Avg: " + (double) elapsedTime / (double) (MAX - MIN)); // } }
public void publish(MonitorEventEntry entry) { disruptor.getRingBuffer().publish(entry.getSequence()); }
public void write(MonitorEventEntry entry) throws IOException { int index = entry.getDestinationIndex(); checkIndex(index); destinations.get()[index].write(entry); }
/** * Constructor. * * @param capacity the fixed event size in bytes */ public MonitorEventEntry(int capacity, ResizableByteBufferMonitor monitor) { buffer = new ResizableByteBuffer(ByteBuffer.allocateDirect(capacity), monitor); entries = new ParameterEntry[DEFAULT_PARAM_SIZE]; for (int i = 0; i < entries.length; i++) { entries[i] = new ParameterEntry(); } }
private void send(MonitorLevel level, long timestamp, String template, Object[] args) { MonitorEventEntry entry = null; try { long start = System.nanoTime(); entry = router.get(); entry.setDestinationIndex(destinationIndex); entry.setTimestampNanos(start); entry.setTemplate(template); if (args != null) { for (int i = 0; i < args.length; i++) { Object arg = args[i]; entry.getEntries()[i].setObjectValue(arg); } } entry.setLevel(level); entry.setLimit(args == null ? 0 : args.length); entry.setEntryTimestamp(timestamp); } finally { if (entry != null) { router.publish(entry); } } }
public int writeTemplate(MonitorEventEntry entry) { String template = entry.getTemplate(); if (template == null) { return 0; ByteBuffer buffer = entry.getBuffer(); int bytesWritten = 0; int counter = 0; ParameterEntry[] entries = entry.getEntries(); for (int i = 0; i < template.length(); i++) { char current = template.charAt(i); if ('{' == current) { if (counter > entry.getLimit()) { throw new ServiceRuntimeException("Monitor message contains more parameters than are supplied by the method interface: " + template); if (counter < entry.getLimit()) { ParameterEntry last = entries[entry.getLimit() - 1]; if (ParameterEntry.Slot.OBJECT == last.getSlot() && last.getObjectValue(Object.class) instanceof Throwable) { bytesWritten = bytesWritten + ObjectWriter.write(last.getObjectValue(Object.class), buffer);
public MonitorEventEntry get() { RingBuffer<MonitorEventEntry> ringBuffer = disruptor.getRingBuffer(); long sequence = ringBuffer.next(); MonitorEventEntry entry = ringBuffer.get(sequence); entry.getBuffer().clear(); for (ParameterEntry parameterEntry : entry.getEntries()) { parameterEntry.reset(); } entry.setSequence(sequence); return entry; }
public void write(MonitorEventEntry entry) { ResizableByteBuffer buffer = entry.getBuffer(); MonitorLevel level = entry.getLevel(); long entryTimestamp = entry.getEntryTimestamp(); int count = eventWriter.writePrefix(level, entryTimestamp, buffer); count = count + eventWriter.writeTemplate(entry); buffer.put(NEWLINE); count++; buffer.limit(count); write(buffer); }
public MonitorEventEntry newInstance() { return new MonitorEventEntry(capacity); } }
public void onEvent(MonitorEventEntry entry, long sequence, boolean endOfBatch) throws Exception { entry.setEndOfBatch(endOfBatch); registry.write(entry); // if (counter >= MIN) { // long time = System.nanoTime() - entry.getTimestampNanos(); // elapsedTime = elapsedTime + time; // } // counter++; // if (counter == MAX) { // System.out.println("Time last event: " + (System.nanoTime() - entry.getTimestampNanos())); // System.out.println("Elapsed: " + elapsedTime); // System.out.println("Avg: " + (double) elapsedTime / (double) (MAX - MIN)); // } }
public void publish(MonitorEventEntry entry) { disruptor.getRingBuffer().publish(entry.getSequence()); }
public void write(MonitorEventEntry entry) throws IOException { int index = entry.getDestinationIndex(); checkIndex(index); destinations.get()[index].write(entry); }
try { entry = get(); entry.setDestinationIndex(destinationIndex); entry.setTimestampNanos(System.nanoTime()); entry.setLevel(level); entry.setEntryTimestamp(timestamp); entry.setTemplate(template); entry.setParse(parse); entry.setLimit(args == null ? 0 : args.length); if (args != null) { for (int i = 0; i < args.length; i++) { Object arg = args[i]; entry.getEntries()[i].setObjectValue(arg);
try { entry = get(); entry.setDestinationIndex(destinationIndex); entry.setTimestampNanos(System.nanoTime()); entry.setLevel(level); entry.setEntryTimestamp(timestamp); entry.setTemplate(template); entry.setLimit(args == null ? 0 : args.length); if (args != null) { for (int i = 0; i < args.length; i++) { Object arg = args[i]; entry.getEntries()[i].setObjectValue(arg);