@Override
  public void init(Object obj) {
    config = (HECTransportConfig) obj;

    this.batchBuffer = Collections.synchronizedList(new LinkedList<String>());
    this.lastEventReceivedTime = System.currentTimeMillis();

    try {

      Registry<SchemeIOSessionStrategy> sslSessionStrategy =
          RegistryBuilder.<SchemeIOSessionStrategy>create()
              .register("http", NoopIOSessionStrategy.INSTANCE)
              .register("https", new SSLIOSessionStrategy(getSSLContext(), HOSTNAME_VERIFIER))
              .build();

      ConnectingIOReactor ioReactor = new DefaultConnectingIOReactor();
      PoolingNHttpClientConnectionManager cm =
          new PoolingNHttpClientConnectionManager(ioReactor, sslSessionStrategy);
      cm.setMaxTotal(config.getPoolsize());

      HttpHost splunk = new HttpHost(config.getHost(), config.getPort());
      cm.setMaxPerRoute(new HttpRoute(splunk), config.getPoolsize());

      httpClient = HttpAsyncClients.custom().setConnectionManager(cm).build();

      uri =
          new URIBuilder()
              .setScheme(config.isHttps() ? "https" : "http")
              .setHost(config.getHost())
              .setPort(config.getPort())
              .setPath("/services/collector")
              .build();

      httpClient.start();

      if (config.isBatchMode()) {
        new BatchBufferActivityCheckerThread().start();
      }

    } catch (Exception e) {
      logger.error("Error initialising HEC Transport: " + ModularInput.getStackTrace(e));
    }
  }