All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.s3downloader.server.SingularityS3DownloaderServer Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
package com.hubspot.singularity.s3downloader.server;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
import com.google.inject.Inject;
import com.hubspot.singularity.runner.base.shared.SingularityDriver;
import com.hubspot.singularity.s3.base.config.SingularityS3Configuration;
import com.hubspot.singularity.s3downloader.config.SingularityS3DownloaderConfiguration;

public class SingularityS3DownloaderServer implements SingularityDriver {

  private static final Logger LOG = LoggerFactory.getLogger(SingularityS3DownloaderServer.class);

  private final SingularityS3DownloaderConfiguration configuration;
  private final SingularityS3Configuration s3Configuration;
  private final SingularityS3DownloaderHandler handler;
  private Optional server;

  @Inject
  public SingularityS3DownloaderServer(SingularityS3DownloaderConfiguration configuration, SingularityS3Configuration s3Configuration, SingularityS3DownloaderHandler handler) {
    this.configuration = configuration;
    this.s3Configuration = s3Configuration;
    this.handler = handler;
    this.server = Optional.absent();
  }

  @Override
  public void shutdown() {
    if (server.isPresent()) {
      try {
        server.get().stop();
      } catch (Throwable t) {
        throw Throwables.propagate(t);
      }
    }
  }

  @Override
  public void startAndWait() {
    Preconditions.checkState(!server.isPresent());

    Preconditions.checkState(s3Configuration.getS3AccessKey().isPresent(), "s3AccessKey not set!");
    Preconditions.checkState(s3Configuration.getS3SecretKey().isPresent(), "s3SecretKey not set!");

    Server server = new Server();

    ServerConnector http = new ServerConnector(server);
    http.setHost("localhost");
    http.setPort(s3Configuration.getLocalDownloadHttpPort());
    http.setIdleTimeout(configuration.getHttpServerTimeout());
    server.addConnector(http);

    server.setHandler(handler);

    try {
      LOG.info("Starting server on {} (configuration: {})", s3Configuration.getLocalDownloadHttpPort(), configuration);

      server.start();

      this.server = Optional.of(server);

      server.join();
    } catch (Throwable t) {
      throw Throwables.propagate(t);
    }
  }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy