package mhfc.net.common.util.services;
/**
* Offers service providers a way to publish their service. They should be kept private so that not everybody can bind
* the service to specific phases
*
* @author WorldSEnder
*
* @param T
* the type of service offered
*/
public interface IServiceAccess<T> extends IServiceKey<T> {
/**
* Used to register a service as being active during the phase. Normally a phase offers a way to retrieve its
* {@link IPhaseKey} with a public method.
* <p>
* Note that a specific {@link IServiceID} can be registered for multiple phases.
*
*
* @param phase
* the phase to register for
* @return this
* @param phaseBootstrapper
* the handler that is used to start and stop the phase
*/
<A, Z> IServiceAccess<T> addTo(IPhaseKey<A, Z> phase, IServicePhaseHandle<T, A, Z> phaseBootstrapper);
}