yegor256/rehttp

View on GitHub
src/main/java/net/rehttp/Entrance.java

Summary

Maintainability
A
0 mins
Test Coverage
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2017-2024 Yegor Bugayenko
 *
 * Permission is hereby granted, free of charge,  to any person obtaining
 * a copy  of  this  software  and  associated  documentation files  (the
 * "Software"),  to deal in the Software  without restriction,  including
 * without limitation the rights to use,  copy,  modify,  merge, publish,
 * distribute,  sublicense,  and/or sell  copies of the Software,  and to
 * permit persons to whom the Software is furnished to do so,  subject to
 * the  following  conditions:   the  above  copyright  notice  and  this
 * permission notice  shall  be  included  in  all copies or  substantial
 * portions of the Software.  The software is provided  "as is",  without
 * warranty of any kind, express or implied, including but not limited to
 * the warranties  of merchantability,  fitness for  a particular purpose
 * and non-infringement.  In  no  event shall  the  authors  or copyright
 * holders be liable for any claim,  damages or other liability,  whether
 * in an action of contract,  tort or otherwise,  arising from, out of or
 * in connection with the software or  the  use  or other dealings in the
 * software.
 */
package net.rehttp;

import com.jcabi.log.VerboseCallable;
import com.jcabi.manifests.Manifests;
import io.sentry.Sentry;
import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import net.rehttp.base.Base;
import net.rehttp.base.DyBase;
import net.rehttp.tk.TkApp;
import org.cactoos.proc.RunnableOf;
import org.takes.http.Exit;
import org.takes.http.FtCli;

/**
 * Command line entry.
 *
 * @since 1.0
 */
public final class Entrance {

    /**
     * Ctor.
     */
    private Entrance() {
        // utility class
    }

    /**
     * Main entry point.
     * @param args Arguments
     * @throws IOException If fails
     */
    public static void main(final String... args) throws IOException {
        Sentry.init(Manifests.read("Rehttp-SentryDsn"));
        final Base base = new DyBase(new Dynamo());
        Executors.newSingleThreadScheduledExecutor().scheduleWithFixedDelay(
            new RunnableOf(new VerboseCallable<Void>(new Retry(base), true)),
            1L, 1L, TimeUnit.MINUTES
        );
        new FtCli(new TkApp(base), args).start(Exit.NEVER);
    }

}