STATE_STARTING

This state indicates that the SMO has been requested to start,
and is in the process of starting. On entering this state an SMO may generate
an event whose type value is "STATE". Event notification of the STARTING state
is optional for all managed objects that implement StateManageable.

STATE_RUNNING

This is the normal running state for an SMO. This state indicates
that the SMO is operational. On entering this state an SMO must generate an
event whose type value is "STATE". Event notification of the RUNNING state is
required for all managed objects that implement StateManageable.

STATE_STOPPING

This state indicates that the SMO has been requested to stop,
and is in the process of stopping. On entering this state an SMO may generate
an event whose type value is "STATE". Event notification of the STOPPING state
is optional for all managed objects that implement StateManageable.

STATE_STOPPED

This state indicates that the StateManageable Object has stopped
and can be restarted. On entering this state an SMO must generate an event
whose type value is "STATE". Event notification of the STOPPED state is
required by all managed objects that implement StateManageable.

STATE_FAILED

This state indicates that the StateManageable Object is in a failed
state and intervention is required to restore the managed object. On entering
this state an SMO must generate an event whose type value is "STATE". Event
notification of the FAILED state is required by all managed objects that
implement StateManageable.

start

Starts the SMO. This operation can be invoked only when the SMO
is in the STOPPED state. It causes the SMO to go into the STARTING
state initially, and if it completes successfully, the SMO will be in
the RUNNING state. Note that start() is not called on any of the child
SMOs that are registered with this SMO; it is the responsibility of the
calling application to start the child SMO if this is required.

startRecursive

Starts the SMO. This operation can only be invoked when the SMO is in the
STOPPED state. It causes the SMO to go into the STARTING state initially,
and if it completes successfully, the SMO will be in the RUNNING state.
startRecursive() is called on all the child SMOs registered with this SMO
that are in the STOPPED state. Stops the SMO. This operation can only be
invoked when the SMO is in the RUNNING or STARTING state. It causes stop()
to be called on all the child SMOs registered with this SMO that are in the
RUNNING or STARTING state. It causes the SMO to go into the STOPPING state
initially, and if it completes successfully, the SMO and all the child SMOs
will be in the STOPPED state. There is no stopRecursive() operation because
it is mandatory if an SMO is in the STOPPED state, that all its child SMOs
must also be in the STOPPED state.

stop

Stops the SMO. This operation can only be invoked when the SMO is in
the RUNNING or STARTING state. It causes stop() to be called on all the
child SMOs registered with this SMO that are in the RUNNING or STARTING
state. It causes the SMO to go into the STOPPING state initially,
and if it completes successfully, the SMO and all the child SMOs will be
in the STOPPED state. There is no stopRecursive() operation because it is
mandatory if an SMO is in the STOPPED state, that all its child SMOs must
also be in the STOPPED state.