TAO_RTEvent 4.0.0
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
TAO_EC_Kokyu_Dispatching Class Reference

Dispatching strategy that minimizes priority inversion. More...

#include <EC_Kokyu_Dispatching.h>

Inheritance diagram for TAO_EC_Kokyu_Dispatching:
Inheritance graph
[legend]
Collaboration diagram for TAO_EC_Kokyu_Dispatching:
Collaboration graph
[legend]

Public Member Functions

 TAO_EC_Kokyu_Dispatching (TAO_EC_Event_Channel_Base *ec, int sched_policy, int sched_scope)
 
virtual void activate ()
 
virtual void shutdown ()
 
virtual void push (TAO_EC_ProxyPushSupplier *proxy, RtecEventComm::PushConsumer_ptr consumer, const RtecEventComm::EventSet &event, TAO_EC_QOS_Info &qos_info)
 
virtual void push_nocopy (TAO_EC_ProxyPushSupplier *proxy, RtecEventComm::PushConsumer_ptr consumer, RtecEventComm::EventSet &event, TAO_EC_QOS_Info &qos_info)
 
- Public Member Functions inherited from TAO_EC_Dispatching
virtual ~TAO_EC_Dispatching ()
 Destructor...
 

Private Member Functions

void setup_lanes ()
 

Private Attributes

ACE_Allocatorallocator_
 
Kokyu::Dispatcher_Auto_Ptr dispatcher_
 The dispatcher.
 
RtecScheduler::Scheduler_var scheduler_
 The scheduler.
 
int lanes_setup_
 
int disp_sched_policy_
 
int disp_sched_scope_
 

Detailed Description

Dispatching strategy that minimizes priority inversion.

This strategy uses multiple queues, each serviced by a thread at different priority. This minimizes priority inversion because the consumers at higher priority are serviced before consumers at lower priority. It is more flexible than using the supplier thread to dispatch because it allows high-priority suppliers to push events to low-priority consumers (and vice-versa). It also isolates the supplier threads from the time spent on upcalls to the consumer objects, making the system easier to analyze and schedule.

Constructor & Destructor Documentation

◆ TAO_EC_Kokyu_Dispatching()

TAO_EC_Kokyu_Dispatching::TAO_EC_Kokyu_Dispatching ( TAO_EC_Event_Channel_Base * ec,
int sched_policy,
int sched_scope )

The scheduler is used to find the range of priorities and similar info.

Member Function Documentation

◆ activate()

void TAO_EC_Kokyu_Dispatching::activate ( )
virtual

Initialize all the data structures, activate any internal threads, etc.

Implements TAO_EC_Dispatching.

◆ push()

void TAO_EC_Kokyu_Dispatching::push ( TAO_EC_ProxyPushSupplier * proxy,
RtecEventComm::PushConsumer_ptr consumer,
const RtecEventComm::EventSet & event,
TAO_EC_QOS_Info & qos_info )
virtual

The consumer represented by proxy should receive event. It can use the information in qos_info to determine the event priority (among other things).

Implements TAO_EC_Dispatching.

◆ push_nocopy()

void TAO_EC_Kokyu_Dispatching::push_nocopy ( TAO_EC_ProxyPushSupplier * proxy,
RtecEventComm::PushConsumer_ptr consumer,
RtecEventComm::EventSet & event,
TAO_EC_QOS_Info & qos_info )
virtual

Implements TAO_EC_Dispatching.

◆ setup_lanes()

void TAO_EC_Kokyu_Dispatching::setup_lanes ( )
private

◆ shutdown()

void TAO_EC_Kokyu_Dispatching::shutdown ( )
virtual

Deactivate any internal threads and cleanup internal data structures, it should only return once the threads have finished their jobs.

Implements TAO_EC_Dispatching.

Member Data Documentation

◆ allocator_

ACE_Allocator* TAO_EC_Kokyu_Dispatching::allocator_
private

◆ disp_sched_policy_

int TAO_EC_Kokyu_Dispatching::disp_sched_policy_
private

◆ disp_sched_scope_

int TAO_EC_Kokyu_Dispatching::disp_sched_scope_
private

◆ dispatcher_

Kokyu::Dispatcher_Auto_Ptr TAO_EC_Kokyu_Dispatching::dispatcher_
private

The dispatcher.

◆ lanes_setup_

int TAO_EC_Kokyu_Dispatching::lanes_setup_
private

◆ scheduler_

RtecScheduler::Scheduler_var TAO_EC_Kokyu_Dispatching::scheduler_
private

The scheduler.


The documentation for this class was generated from the following files: