RTC::ExecutionContextService Interface Reference
ExecutionContextService.
More...
import "RTC.idl";
List of all members.
Detailed Description
ExecutionContextService.
An
ExecutionContextService exposes an
ExecutionContext as an SDO service such that the context may be controlled remotely.
Depending on the implementation, this interface may itself be an execution context (that is, it may be passed to the operations of
ComponentAction) or it may represent a remote execution context that is not of type
ExecutionContextService.
Member Function Documentation
get_profile
This operation provides a profile "descriptor" for the execution context.
boolean RTC::ExecutionContext::is_running |
( |
|
) |
[inherited] |
is_running
This operation shall return true if the context is in the Running state.
While the context is Running, all Active RTCs participating in the context shall be executed according to the context¡Çs execution kind.
start
Request that the context enter the Running state. Once the state transition occurs, the
ComponentAction::on_startup operation (see Section 5.2.2.4.3) will be invoked.
An execution context may not be started until the RT components that participate in it have been initialized. An execution context may be started and stopped multiple times.
- This operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET if the context is not in the Stopped state.
- This operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET if any of the participating components are not in their Alive state.
stop
Request that the context enter the Stopped state. Once the transition occurs, the
ComponentAction::on_shutdown operation (see Section 5.2.2.4.4) will be invoked.
An execution context must be stopped before the RT components that participate in it are finalized.
An execution context may be started and stopped multiple times.
- This operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET if the context is not in the Running state.
double RTC::ExecutionContext::get_rate |
( |
|
) |
[inherited] |
get_rate
This operation shall return the rate (in hertz) at which its Active participating RTCs are being invoked.
An implementation is permitted to perform some periodic or quasi-periodic processing within an execution context with an ExecutionKind other than PERIODIC. In such a case, the result of this operation is implementation-defined. If no periodic processing of any kind is taking place within the context, this operation shall fail as described in Section 5.2.1.
- If the context has an ExecutionKind of PERIODIC, this operation shall return a rate greater than zero.
ReturnCode_t RTC::ExecutionContext::set_rate |
( |
in double |
rate |
) |
[inherited] |
set_rate
This operation shall set the rate (in hertz) at which this context¡Çs Active participating RTCs are being called.
If the execution kind of the context is PERIODIC, a rate change shall result in the invocation of on_rate_changed on any RTCs realizing
DataFlowComponentAction that are registered with any RTCs participating in the context. An implementation is permitted to perform some periodic or quasi-periodic processing within an execution context with an ExecutionKind other than PERIODIC. If such is the case, and the implementation reports a rate from get_rate, this operation shall set that rate successfully provided that the given rate is valid. If no periodic processing of any kind is taking place within the context, this operation shall fail with ReturnCode_t::UNSUPPORTED.
- The given rate must be greater than zero. Otherwise, this operation shall fail with ReturnCode_t::BAD_PARAMETER.
add_component
The operation causes the given
RTC to begin participating in the execution context.
The newly added
RTC will receive a call to LightweightRTComponent::attach_context (see Section 5.2.2.2.5) and then enter the Inactive state.
- If the ExecutionKind of this context is PERIODIC, the RTC must be a data flow component (see Section 5.3.1.1). Otherwise, this operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
- If the ExecutionKind of this context is EVENT_DRIVEN, the RTC must be an FSM participant (see Section 5.3.2.3). Otherwise, this operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
remove_component
This operation causes a participant
RTC to stop participating in the execution context.
The removed
RTC will receive a call to LightweightRTComponent::detach_context (see Section 5.2.2.2.6).
- If the given RTC is not currently participating in the execution context, this operation shall fail with ReturnCode_t::BAD_PARAMETER.
- An RTC must be deactivated before it can be removed from an execution context. If the given RTC is participating in the execution context but is still in the Active state, this operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
activate_component
The given participant
RTC is Inactive and is therefore not being invoked according to the execution context¡Çs execution kind. This operation shall cause the
RTC to transition to the Active state such that it may subsequently be invoked in this execution context.
The callback on_activate shall be called as a result of calling this operation. This operation shall not return until the callback has returned, and shall result in an error if the callback does. The following figure is a non-normative example sequence diagram for activate_component.
- An execution context can only activate its participant components. If the given RTC is not participating in the execution context, this operation shall fail with ReturnCode_t::BAD_PARAMETER.
- An RTC that is in the Error state cannot be activated until after it has been reset. If the given RTC is in the Error state, this operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
- This operation shall fail with ReturnCode_t::BAD_PARAMETER if the given component is not in its Alive state.
deactivate_component
The given
RTC is Active in the execution context. Cause it to transition to the Inactive state such that it will not be subsequently invoked from the context unless and until it is activated again.
The callback on_deactivate shall be called as a result of calling this operation. This operation shall not return until the callback has returned, and shall result in an error if the callback does. The following figure is a non-normative example sequence diagram for deactivate_component.
- An execution context can only deactivate its participant components. If the given RTC is not participating in the execution context, this operation shall fail with ReturnCode_t::BAD_PARAMETER.
- This operation shall fail with ReturnCode_t::BAD_PARAMETER if the given component is not in its Alive state.
reset_component
Attempt to recover the
RTC when it is in Error.
The
ComponentAction::on_reset callback shall be invoked. This operation shall not return until the callback has returned, and shall result in an error if the callback does. If possible, the
RTC developer should implement that callback such that the
RTC may be returned to a valid state. * If this operation fails, the
RTC will remain in Error.
- An RTC may only be reset in an execution context in which it is in error. If the RTC is not in Error in the identified context, this operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET. However, that failure shall not cause the RTC to enter the Error state.
- An RTC may not be reset while in the Created state. Any attempt to invoke this operation while the RTC is in that state shall fail with ReturnCode_t::PRECONDITION_NOT_MET. However, that failure shall not cause the RTC to enter the Error state.
get_component_state
This operation shall report the LifeCycleState of the given participant
RTC.
- The given RTC must be Alive.
- The given RTC must be a participant in the target execution context.
- The LifeCycleState returned by this operation shall be one of LifeCycleState::INACTIVE, ACTIVE, or ERROR.
get_kind
This operation shall report the execution kind of the execution context.
The documentation for this interface was generated from the following file: