@Beta public abstract class ForwardingService extends ForwardingObject implements Service
Service
that forwards all method calls to another service.Service.State
Modifier | Constructor and Description |
---|---|
protected |
ForwardingService()
Constructor for use by subclasses.
|
Modifier and Type | Method and Description |
---|---|
protected abstract Service |
delegate()
Returns the backing delegate instance that methods are forwarded to.
|
boolean |
isRunning()
Returns
true if this service is running. |
protected Service.State |
standardStartAndWait()
A sensible default implementation of
startAndWait() , in terms of
start() . |
protected Service.State |
standardStopAndWait()
A sensible default implementation of
stopAndWait() , in terms of
stop() . |
ListenableFuture<Service.State> |
start()
If the service state is
Service.State.NEW , this initiates service startup
and returns immediately. |
Service.State |
startAndWait()
Initiates service startup (if necessary), returning once the service has
finished starting.
|
Service.State |
state()
Returns the lifecycle state of the service.
|
ListenableFuture<Service.State> |
stop()
|
Service.State |
stopAndWait()
Initiates service shutdown (if necessary), returning once the service has
finished stopping.
|
toString
protected ForwardingService()
protected abstract Service delegate()
ForwardingObject
ForwardingSet.delegate()
. Concrete subclasses override this method to supply
the instance being decorated.delegate
in class ForwardingObject
public ListenableFuture<Service.State> start()
Service
Service.State.NEW
, this initiates service startup
and returns immediately. If the service has already been started, this
method returns immediately without taking action. A stopped service may not
be restarted.start
in interface Service
Future.get()
will block
until the service has finished starting, and returns one of Service.State.RUNNING
, Service.State.STOPPING
or Service.State.TERMINATED
. If
the service fails to start, Future.get()
will throw an
ExecutionException
, and the service's state will be Service.State.FAILED
. If it has already finished starting, Future.get()
returns immediately. Cancelling the returned
future is unsupported and always returns false
.public Service.State state()
Service
public ListenableFuture<Service.State> stop()
Service
stop
in interface Service
Future.get()
will block
until the service has finished shutting down, and either returns
Service.State.TERMINATED
or throws an ExecutionException
. If
it has already finished stopping, Future.get()
returns
immediately. Cancelling this future is unsupported and always returns
false
.public Service.State startAndWait()
Service
start().get()
, this method throws
no checked exceptions, and it cannot be interrupted.startAndWait
in interface Service
public Service.State stopAndWait()
Service
Service.State.STARTING
, startup will be
cancelled. If this is Service.State.NEW
, it is terminated
without having been started nor stopped. Unlike calling stop().get()
, this method throws no checked exceptions.stopAndWait
in interface Service
public boolean isRunning()
Service
true
if this service is running.protected Service.State standardStartAndWait()
startAndWait()
, in terms of
start()
. If you override start()
, you may wish to override
startAndWait()
to forward to this implementation.protected Service.State standardStopAndWait()
stopAndWait()
, in terms of
stop()
. If you override stop()
, you may wish to override
stopAndWait()
to forward to this implementation.