mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
77 lines
2.3 KiB
Java
77 lines
2.3 KiB
Java
package org.briarproject.api.lifecycle;
|
|
|
|
import org.briarproject.api.clients.Client;
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
/**
|
|
* Manages the lifecycle of the app, starting {@link
|
|
* org.briarproject.api.clients.Client Clients}, starting and stopping {@link
|
|
* Service Services}, shutting down {@link java.util.concurrent.ExecutorService
|
|
* ExecutorServices}, and opening and closing the {@link
|
|
* org.briarproject.api.db.DatabaseComponent DatabaseComponent}.
|
|
*/
|
|
public interface LifecycleManager {
|
|
|
|
/**
|
|
* The result of calling {@link LifecycleManager#startServices()}.
|
|
*/
|
|
enum StartResult {
|
|
ALREADY_RUNNING, DB_ERROR, SERVICE_ERROR, SUCCESS
|
|
}
|
|
|
|
/**
|
|
* Registers a {@link Service} to be started and stopped.
|
|
*/
|
|
void registerService(Service s);
|
|
|
|
/**
|
|
* Registers a {@link org.briarproject.api.clients.Client Client} to be
|
|
* started.
|
|
*/
|
|
void registerClient(Client c);
|
|
|
|
/**
|
|
* Registers an {@link java.util.concurrent.ExecutorService ExecutorService}
|
|
* to be shut down.
|
|
*/
|
|
void registerForShutdown(ExecutorService e);
|
|
|
|
/**
|
|
* Opens the {@link org.briarproject.api.db.DatabaseComponent
|
|
* DatabaseComponent} and starts any registered {@link
|
|
* org.briarproject.api.clients.Client Clients} and {@link Service
|
|
* Services}.
|
|
*/
|
|
StartResult startServices();
|
|
|
|
/**
|
|
* Stops any registered {@link Service Services}, shuts down any
|
|
* registered {@link java.util.concurrent.ExecutorService ExecutorServices},
|
|
* and closes the {@link org.briarproject.api.db.DatabaseComponent
|
|
* DatabaseComponent}.
|
|
*/
|
|
void stopServices();
|
|
|
|
/**
|
|
* Waits for the {@link org.briarproject.api.db.DatabaseComponent
|
|
* DatabaseComponent} to be opened before returning.
|
|
*/
|
|
void waitForDatabase() throws InterruptedException;
|
|
|
|
/**
|
|
* Waits for the {@link org.briarproject.api.db.DatabaseComponent
|
|
* DatabaseComponent} to be opened and all registered {@link
|
|
* org.briarproject.api.clients.Client Clients} and {@link Service
|
|
* Services} to start before returning.
|
|
*/
|
|
void waitForStartup() throws InterruptedException;
|
|
|
|
/**
|
|
* Waits for all registered {@link Service Services} to stop, all
|
|
* registered {@link java.util.concurrent.ExecutorService ExecutorServices}
|
|
* to shut down, and the {@link org.briarproject.api.db.DatabaseComponent
|
|
* DatabaseComponent} to be closed before returning.
|
|
*/
|
|
void waitForShutdown() throws InterruptedException;
|
|
} |