An interface that can be implemented by a service component instead of implementing the simpler GenericService. This interface adds some methods that allow the user to query the state of the service.
Example Java implementation of a service component implementing this interface:
public class MyService
{
private static boolean _starting = false;
private static boolean _running = false;
private static boolean _stopping = false;
private static boolean _stop = false;
private static boolean _runHasBeenCalled = false;
public void start()
{
_starting = true;
// Perform initialization
_starting = false;
}
public void stop()
{
_stopping = true;
_running = false;
_stop = true;
// Perform cleanup
_stopping = false;
}
public void run()
{
_runHasBeenCalled = true;
_running = true;
while (! _stop)
{
try
{
// do whatever this service does on each iteration
Thread.sleep(10000);
}
catch (InterruptedException ie)
{
_stop = true;
}
}
_running = false;
}
public int getServiceState()
{
if (_starting)
{
return SERVICE_STATE_STARTING.value;
}
else if (! _runHasBeenCalled)
{
return SERVICE_STATE_STARTED.value;
}
else if (_stopping)
{
return SERVICE_STATE_STOPPING.value;
}
else if (_stop)
{
return SERVICE_STATE_STOPPED.value;
}
else if (_running)
{
return SERVICE_STATE_RUNNING.value;
}
else
{
return SERVICE_STATE_FINISHED.value;
}
}
}