package sk.stuba.fiit.perconik.core.services;
/**
* A dynamically created accessor to a snapshot of active core services.
*
* @author Pavol Zbell
* @since 1.0
*/
public final class ServiceSnapshot {
ServiceGroup<Service> services;
private ServiceSnapshot() {
this.services = new ServiceGroup<>(Services.inStartOrder());
}
/**
* Takes a snapshot of currently active core services.
* @return new snapshot of currently active core services
*/
public static ServiceSnapshot take() {
return new ServiceSnapshot();
}
/**
* Gets snapshotted core services.
*/
public ServiceGroup<Service> services() {
return this.services;
}
/**
* Gets snapshotted core services in start order.
*/
public ServiceGroup<Service> servicesInStartOrder() {
return this.services;
}
/**
* Gets snapshotted core services in stop order.
*/
public ServiceGroup<Service> servicesInStopOrder() {
return this.services.reverse();
}
}