public void sendEvent(Event event) throws InterruptedException {
        try {
            if (latencyTracker != null && Level.BASIC.compareTo(siddhiAppContext.getRootMetricsLevel()) <= 0) {
                latencyTracker.markOut();
            }
            Object[] transportProperties = trpProperties.get();
            String[] transportSyncProperties = trpSyncProperties.get();
            if (event.getTimestamp() == -1) {
                long currentTimestamp = timestampGenerator.currentTime();
                event.setTimestamp(currentTimestamp);
            }
            for (int i = 0; i < transportMapping.size(); i++) {
                AttributeMapping attributeMapping = transportMapping.get(i);
                event.getData()[attributeMapping.getPosition()] = AttributeConverter.getPropertyValue(
                        transportProperties[i], attributeMapping.getType());
            }
            inputEventHandlerCallback.sendEvent(event, transportSyncProperties);
            eventCount++;
        } catch (RuntimeException e) {
            LOG.error(ExceptionUtil.getMessageWithContext(e, siddhiAppContext) +
                    " Error in applying transport property mapping for '" + sourceType
                    + "' source at '" + inputHandler.getStreamId() + "' stream.", e);
        }
    }
This class wraps {@link InputHandler} class in order to guarantee exactly once processing
modules/siddhi-core/src/main/java/io/siddhi/core/stream/input/source/InputEventHandler.java