Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

RTC::ExecutionContextBase Class Reference

ExecutionContext base class. More...

#include <ExecutionContext.h>

Inheritance diagram for RTC::ExecutionContextBase:

RTC::PeriodicExecutionContext List of all members.

Public Member Functions

 ExecutionContextBase ()
 Constructor.
 ExecutionContextBase (RTObject_ptr owner)
virtual ~ExecutionContextBase ()
 Destructor.
virtual CORBA::Boolean is_running ()
 Test for ExecutionContext running state.
virtual ReturnCode_t start ()
 Start the ExecutionContext.
virtual ReturnCode_t stop ()
 Stop the ExecutionContext.
virtual CORBA::Double get_rate ()
 Get executionrate(Hz).
virtual ReturnCode_t set_rate (CORBA::Double rate)
 Set rate (Hz).
virtual ReturnCode_t activate_component (LightweightRTObject_ptr comp)
 Activate a component.
virtual ReturnCode_t deactivate_component (LightweightRTObject_ptr comp)
 Deactivate a component.
virtual ReturnCode_t reset_component (LightweightRTObject_ptr comp)
 Deactivate a component.
virtual LifeCycleState get_component_state (LightweightRTObject_ptr comp)
 Get component's state.
virtual ExecutionKind get_kind ()
 Get the ExecutionKind.
virtual ReturnCode_t add (LightweightRTObject_ptr comp)
 Add a component.
virtual ReturnCode_t remove (LightweightRTObject_ptr comp)
 Remove the component from component list.
virtual ExecutionContextProfile * get_profile ()
 Get the ExecutionContextProfile.

Protected Attributes

ExecutionContextProfile m_profile
CORBA::Boolean m_running

Classes

struct  find_objref

Detailed Description

ExecutionContext base class.

An ExecutionContext allows the business logic of an RTC to be decoupled from the thread of control in which it is executed. The context represents a logical thread of control and is provided to RTCs at runtime as an argument to various operations, allowing them to query and modify their own state, and that of other RTCs executing within the same context, in the lifecycle. This separation of concerns is important for two primary reasons:

Ownership and Participation
Each execution context is owned by a single RTC and may be used to execute that RTC and the RTCs contained within it, directly or indirectly. An RTC that owns one or more execution contexts is known as an autonomous RTC. An autonomous RTC and some subset of the RTCs within it (to be defined by the application developer) shall be executed by the infrastructure according to the context's execution kind, which defines when each RTC's operations will be invoked when and in which order. These RTCs are said to participate in the context. The available execution kinds are described below. The relationship between RTCs and execution contexts may be many-to-many in the general case: multiple RTCs may be invoked from the same execution context, and a single RTC may be invoked from multiple contexts. In the case where multiple RTCs are invoked from the same context, starting or stopping the context shall result in the corresponding lifecycle transitions for all of those components.

Logical and Physical Threads
Although an execution context represents a logical thread of control, the choice of how it maps to a physical thread shall be left to the application”Ēs deployment environment. Implementations may elect to associate contexts with threads with a one-to-one mapping, to serve multiple contexts from a single thread, or by any other means. In the case where a given RTC may be invoked from multiple contexts, concurrency management is implementation-dependent.


Constructor & Destructor Documentation

RTC::ExecutionContextBase::ExecutionContextBase  )  [inline]
 

Constructor.

RTC::ExecutionContextBase::ExecutionContextBase RTObject_ptr  owner  ) 
 

virtual RTC::ExecutionContextBase::~ExecutionContextBase  )  [inline, virtual]
 

Destructor.


Member Function Documentation

virtual ReturnCode_t RTC::ExecutionContextBase::activate_component LightweightRTObject_ptr  comp  )  [virtual]
 

Activate a component.

Description

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.

Constraints

  • 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 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 PRECONDITION_NOT_MET.
Returns:
This operation returns OK, BAD_PARAMETER or PRECONDITION_NOT_MET

Reimplemented in RTC::PeriodicExecutionContext.

virtual ReturnCode_t RTC::ExecutionContextBase::add LightweightRTObject_ptr  comp  )  [virtual]
 

Add a component.

The operation causes the given RTC to begin participating in the execution context.

The newly added RTC will begin in the Inactive state. If the ExecutionKind is PERIODIC, the index represents the sorted order in which the RTC is to be executed. Otherwise, the meaning of the index is implementation-defined and may be ignored.

Constraints

  • If the ExecutionKind is PERIODIC, the RTC must be a data flow participant (see OMG RTC Specification section 2.3.1.2). Otherwise, this operation will fail with PRECONDITION_NOT_MET.
Returns:
OK or PRECONDITION_NOT_ME would be returned.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ReturnCode_t RTC::ExecutionContextBase::deactivate_component LightweightRTObject_ptr  comp  )  [virtual]
 

Deactivate a component.

Description

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.

Constraints

  • 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 BAD_PARAMETER.
Returns:
This operation returns OK or BAD_PARAMETER.

Reimplemented in RTC::PeriodicExecutionContext.

virtual LifeCycleState RTC::ExecutionContextBase::get_component_state LightweightRTObject_ptr  comp  )  [virtual]
 

Get component's state.

Description

This operation shall report the LifeCycleState of the given participant RTC.

Constraints

  • The given RTC must be Alive.
  • The given RTC must be a participant in the target ExecutionContext.
  • The LifeCycleState returned by this operation shall be one of LifeCycleState::INACTIVE, ACTIVE, or ERROR.
Returns:
The LifeCycleState returned by this operation shall be one of LifeCycleState::INACTIVE, ACTIVE, or ERROR.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ExecutionKind RTC::ExecutionContextBase::get_kind  )  [virtual]
 

Get the ExecutionKind.

Description

This operation shall report the execution kind of the execution context.

ExecutionKind

The ExecutionKind enumeration defines the execution semantics (see OMG RTC Specification section 2.3) of the RTCs that participate in an execution context.
PERIODIC The participant RTCs are executing according to periodic sampled data semantics (see OMG RTC Specification section 2.3.1).
EVENT_DRIVEN The participant RTCs are executing according to stimulus response semantics (see OMG RTC Specification section 2.3.2).
OTHER The participant RTCs are executing according to some semantics not defined by this specification.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ExecutionContextProfile* RTC::ExecutionContextBase::get_profile  )  [virtual]
 

Get the ExecutionContextProfile.

Description

This operation provides a profile descriptor for the execution context.

Reimplemented in RTC::PeriodicExecutionContext.

virtual CORBA::Double RTC::ExecutionContextBase::get_rate  )  [virtual]
 

Get executionrate(Hz).

Description

This operation shall return the rate (in hertz) at which its Active participating RTCs are being invoked.

Semantics

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 2.2.1 above.

Constraints

Returns:
If the context has an ExecutionKind of PERIODIC, this operation shall return a rate greater than zero.

Reimplemented in RTC::PeriodicExecutionContext.

virtual CORBA::Boolean RTC::ExecutionContextBase::is_running  )  [virtual]
 

Test for ExecutionContext running state.

Description

This operation shall return true if the context is in the Running state.

Semantics

While the context is Running, all Active RTCs participating in the context shall be executed according to the context's execution kind.

Returns:
If the ExecutionContext is running, it returns true.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ReturnCode_t RTC::ExecutionContextBase::remove LightweightRTObject_ptr  comp  )  [virtual]
 

Remove the component from component list.

Description

This operation causes a participant RTC to stop participating in the execution context.

Constraints

  • If the given RTC is not currently participating in the execution context, this operation shall fail with 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 PRECONDITION_NOT_MET.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ReturnCode_t RTC::ExecutionContextBase::reset_component LightweightRTObject_ptr  comp  )  [virtual]
 

Deactivate a component.

Description

The given RTC is Error or 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.

Constraints

  • 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 BAD_PARAMETER.
Returns:
This operation returns OK or BAD_PARAMETER.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ReturnCode_t RTC::ExecutionContextBase::set_rate CORBA::Double  rate  )  [virtual]
 

Set rate (Hz).

Description

This operation shall set the rate (in hertz) at which this context's Active participating RTCs are being called.

Semantics

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.

Constraints

Returns:
The given rate must be greater than zero. Otherwise, this operation shall fail with ReturnCode_t::BAD_PARAMETER.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ReturnCode_t RTC::ExecutionContextBase::start  )  [virtual]
 

Start the ExecutionContext.

Description

Request that the context enter the Running state. Once the state transition occurs, the ComponentAction::on_startup operation (see OMG RTC Specification section 2.2.2.5.2) will be invoked.

Semantics

An execution context may be started and stopped multiple times.

Constraints

Returns:
This operation shall fail with PRECONDITION_NOT_MET if the context is not in the Stopped state.

Reimplemented in RTC::PeriodicExecutionContext.

virtual ReturnCode_t RTC::ExecutionContextBase::stop  )  [virtual]
 

Stop the ExecutionContext.

Description

Request that the context enter the Stopped state. Once the transition occurs, the ComponentAction::on_shutdown operation (see OMG RTC Specification section 2.2.2.5.4) will be invoked.

Semantics

An execution context may be started and stopped multiple times.

Constraints

Returns:
This operation shall fail with PRECONDITION_NOT_MET if the context is not in the Stopped state.

Reimplemented in RTC::PeriodicExecutionContext.


Member Data Documentation

ExecutionContextProfile RTC::ExecutionContextBase::m_profile [protected]
 

Reimplemented in RTC::PeriodicExecutionContext.

CORBA::Boolean RTC::ExecutionContextBase::m_running [protected]
 

Reimplemented in RTC::PeriodicExecutionContext.


The documentation for this class was generated from the following file:
Generated on Fri Oct 5 05:16:03 2007 for OpenRTM by  doxygen 1.4.1