@Override public ReportingEvent newInstance() { return new ReportingEvent(); } }
@Override public void translateTo(ReportingEvent event, long sequence, ErrorCapture error) { event.setError(error); } };
@Override public void translateTo(ReportingEvent event, long sequence, Span s) { event.setSpan(s); } };
private void writeEvent(ReportingEvent event) { if (event.getTransaction() != null) { currentlyTransmitting++; payloadSerializer.serializeTransactionNdJson(event.getTransaction()); event.getTransaction().recycle(); } else if (event.getSpan() != null) { currentlyTransmitting++; payloadSerializer.serializeSpanNdJson(event.getSpan()); event.getSpan().recycle(); } else if (event.getError() != null) { currentlyTransmitting++; payloadSerializer.serializeErrorNdJson(event.getError()); event.getError().recycle(); } else if (event.getMetricRegistry() != null) { payloadSerializer.serializeMetrics(event.getMetricRegistry()); } }
private void sendShutdownEvent() { final ReportingEvent reportingEvent = new ReportingEvent(); reportingEvent.shutdownEvent(); reportingEventHandler.onEvent(reportingEvent, -1, true); }
private void reportTransaction(IntakeV2ReportingEventHandler reportingEventHandler) { final ReportingEvent reportingEvent = new ReportingEvent(); reportingEvent.setTransaction(new Transaction(mock(ElasticApmTracer.class))); reportingEventHandler.onEvent(reportingEvent, -1, true); }
private void reportSpan() { final ReportingEvent reportingEvent = new ReportingEvent(); reportingEvent.setSpan(new Span(mock(ElasticApmTracer.class))); reportingEventHandler.onEvent(reportingEvent, -1, true); }
private void reportError() { final ReportingEvent reportingEvent = new ReportingEvent(); reportingEvent.setError(new ErrorCapture(MockTracer.create())); reportingEventHandler.onEvent(reportingEvent, -1, true); }
@Override public void translateTo(ReportingEvent event, long sequence) { event.shutdownEvent(); } };
@Override public void translateTo(ReportingEvent event, long sequence, Transaction t) { event.setTransaction(t); } };
@Override public void onEvent(ReportingEvent event, long sequence, boolean endOfBatch) { if (event.getTransaction() != null) { for (int i = 0; i < processors.size(); i++) { processors.get(i).processBeforeReport(event.getTransaction()); } } else if (event.getError() != null) { for (int i = 0; i < processors.size(); i++) { processors.get(i).processBeforeReport(event.getError()); } } } }
@Override public void onEvent(ReportingEvent event, long sequence, boolean endOfBatch) { if (logger.isDebugEnabled()) { logger.debug("Receiving {} event (sequence {})", event.getType(), sequence); } try { if (!shutDown) { handleEvent(event, sequence, endOfBatch); } } finally { event.resetState(); } }
private void handleEvent(ReportingEvent event, long sequence, boolean endOfBatch) { if (event.getType() == null) { return; } else if (event.getType() == ReportingEvent.ReportingEventType.FLUSH) { flush(); return; } else if (event.getType() == ReportingEvent.ReportingEventType.SHUTDOWN) { shutDown = true; flush(); return; } processorEventHandler.onEvent(event, sequence, endOfBatch); try { if (connection == null) { connection = startRequest(); payloadSerializer.serializeMetaDataNdJson(metaData); } writeEvent(event); } catch (Exception e) { logger.error("Failed to handle event of type {} with this error: {}", event.getType(), e.getMessage()); logger.debug("Event handling failure", e); flush(); onConnectionError(null, currentlyTransmitting + 1, 0); } if (shouldFlush()) { flush(); } }