package com.r35157.nenjim.kicker;

import org.jetbrains.annotations.NotNull;

import java.util.HashMap;

public interface NenjimKicker {
    /**
     * Starts a process based on the provided fully qualified interface name.
     * The actual implementation that is run is bound according to the Context.
     *
     * @param fqInterfaceName the fully qualified interface name for the actual class to start as a process. The interface must extend the {@code NenjimProcess} interface.
     */
    void startProcess(@NotNull String fqInterfaceName);

    /**
     * Provides a map of all running processes managed by the NenjimHub, keyed by the processId.
     *
     * @return a map of {@code NenjimProcess} running processes
     */
    @NotNull HashMap<Integer, NenjimProcess> getRunningProcesses();

    /**
     * A no-operation (noop). This method does nothing.
     */
    void noop();
}
