Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

# ACE_ConsumerQOS_Factory Class Reference

Consumer QOS Factory. More...

`#include <Event_Utilities.h>`

Collaboration diagram for ACE_ConsumerQOS_Factory:

[legend]
List of all members.

## Public Methods

| ACE_ConsumerQOS_Factory (TAO_EC_Event_Initializer initializer=0)
| Default construction.
| ~ACE_ConsumerQOS_Factory (void)
| Death and destruction.
int | start_conjunction_group (int nchildren=0)
int | start_disjunction_group (int nchildren=0)
int | start_logical_and_group (int nchildren=0)
int | start_negation (void)
int | start_bitmask (CORBA::ULong source_mask, CORBA::ULong type_mask)
int | insert_bitmasked_value (CORBA::ULong source_mask, CORBA::ULong type_mask, CORBA::ULong source_value, CORBA::ULong type_value)
int | insert_null_terminator (void)
| Insert a node that accepts any event, useful for bitmask filters.
int | insert (const RtecEventChannelAdmin::Dependency &subscribe)
int | insert (RtecEventComm::EventSourceID source, RtecEventComm::EventType type, RtecBase::handle_t rt_info)
int | insert_type (RtecEventComm::EventType type, RtecBase::handle_t rt_info)
| Insert type-only dependency.
int | insert_source (RtecEventComm::EventSourceID source, RtecBase::handle_t rt_info)
| Insert source-only dependency.
int | insert_time (RtecEventComm::EventType type, RtecEventComm::Time interval, RtecBase::handle_t rt_info)
int | insert_act (RtecEventComm::EventData act)
| This will be inserted as type ACE_ES_EVENT_ACT.
const RtecEventChannelAdmin::ConsumerQOS & | get_ConsumerQOS (void)
| operator const RtecEventChannelAdmin::ConsumerQOS & (void)
| Calls this->get_ConsumerQOS.

## Static Public Methods

void | debug (const RtecEventChannelAdmin::ConsumerQOS &qos)

## Private Attributes

RtecEventChannelAdmin::ConsumerQOS | qos_
| The representation to be sent to the channel.
int | designator_set_
TAO_EC_Event_Initializer | event_initializer_

## Detailed Description

Consumer QOS Factory.

This class allows easy (free from CORBA IDL constraints) construction of RtecEventChannelAdmin::ConsumerQOS structures. = CORRELATIONS ACE_ConsumerQOS_Factory separates subscriptions into conjunction and disjunction groups. A group can be thought of as a set of events inside parenthesis: (A+B+C), where A,B, and C are events. The following code would be used to represent (A+B) | (B+C): ACE_ConsumerQOS_Factor factory; factory.start_conjunction_group (); factory.insert (A); factory.insert (B); factory.start_conjunction_group (); factory.insert (B); factory.insert (C); The following code would be used to represent (A|B) | (B|C): ACE_ConsumerQOS_Factor factory; factory.start_disjunction_group (); factory.insert (A); factory.insert (B); factory.start_disjunction_group (); factory.insert (B); factory.insert (C); First, this may not seem to be initially useful, as (A|B) | (B|C) seems the same as A|B|C. However, this form does have a significant use when deadline timers are specified (described below). Note that groups end with the next call to start_XX_group. Groups are always OR'd together. That is, there is no way to directly build (A|B|C) + (D|E|F). You can always expand the previous statement to the OR of multiple ANDs. = TIMEOUTS There are two types of timeout types defined in Event_Service_Constants.h. ACE_ES_EVENT_INTERVAL_TIMEOUT - the consumer wants to receive a timeout every N seconds. ACE_ES_EVENT_DEADLINE_TIMEOUT - the consumer wants the timeout if and only if some dependencies are not resolved first. Using these timeouts with the correlations discussed above, we can construct four different timer semantics: Interval Timer, Deadline Timer, Interval Correlation, Deadline Correlation: Interval Timer: (A+B+C) | (D+E+F) | (G+H+I) | IntervalTimeout This registers to receive an interval timeout regardless of other dependencies. Event if events occur, the interval timeout will still be sent. Deadline Timer: (A+B+C) | (D+E+F) | (G+H+I) | DeadlineTimeout This registers to receive the deadline timeout ONLY if no other events occur. If a single event is sent to the consumer, the timer is cancelled and rescheduled. Deadline Correlation: (A+B+C) | (D+E+F) | (G+H+DeadlineTimeout) If G and H do not occur within DeadlineTimeout time, a deadline timeout is sent. It is cancelled and rescheduled if G and H occur. Interval Correlation: (A+B+C) | (D+E+F) | (G+H+IntervalTimeout) G+H+IntervalTimeout are sent ONLY after all have occurred. If G+H occur, they are queued until IntervalTimeout occurs. If IntervalTimeout occurs, it is queued until G+H occur.

## Constructor & Destructor Documentation

ACE_ConsumerQOS_Factory::ACE_ConsumerQOS_Factory | ( | TAO_EC_Event_Initializer | initializer = 0 | ) |

| Default construction.

ACE_ConsumerQOS_Factory::~ACE_ConsumerQOS_Factory | ( | void |  | ) |

| Death and destruction.

## Member Function Documentation

void ACE_ConsumerQOS_Factory::debug | ( | const RtecEventChannelAdmin::ConsumerQOS & | qos | ) | `[static]`

ACE_INLINE const RtecEventChannelAdmin::ConsumerQOS & ACE_ConsumerQOS_Factory::get_ConsumerQOS | ( | void |  | ) |

| Allows conversions to ConsumerQOS, which is expected by the PushSupplierProxy::connect_push_consumer interface.

ACE_INLINE int ACE_ConsumerQOS_Factory::insert | ( | RtecEventComm::EventSourceID | source,
|  | RtecEventComm::EventType | type,
|  | RtecBase::handle_t | rt_info
| ) |

| Insert source/type dependency. source of the event (may be zero), type of the event. rt_info describes the method that will handle the source/type events.

int ACE_ConsumerQOS_Factory::insert | ( | const RtecEventChannelAdmin::Dependency & | subscribe | ) |

| Insert the subscribe structure describing the event and receiving method into the current group.

ACE_INLINE int ACE_ConsumerQOS_Factory::insert_act | ( | RtecEventComm::EventData | act | ) |

| This will be inserted as type ACE_ES_EVENT_ACT.

ACE_INLINE int ACE_ConsumerQOS_Factory::insert_bitmasked_value | ( | CORBA::ULong | source_mask,
|  | CORBA::ULong | type_mask,
|  | CORBA::ULong | source_value,
|  | CORBA::ULong | type_value
| ) |

| Inser a new filter that only accepts events with the following properties: (event.header.type & type_mask) == type_value (event.header.source & source_mask) == source_value

ACE_INLINE int ACE_ConsumerQOS_Factory::insert_null_terminator | ( | void |  | ) |

| Insert a node that accepts any event, useful for bitmask filters.

ACE_INLINE int ACE_ConsumerQOS_Factory::insert_source | ( | RtecEventComm::EventSourceID | source,
|  | RtecBase::handle_t | rt_info
| ) |

| Insert source-only dependency.

ACE_INLINE int ACE_ConsumerQOS_Factory::insert_time | ( | RtecEventComm::EventType | type,
|  | RtecEventComm::Time | interval,
|  | RtecBase::handle_t | rt_info
| ) |

| Register temporal dependency. type designates interval or deadline timeout that will occur every interval.

ACE_INLINE int ACE_ConsumerQOS_Factory::insert_type | ( | RtecEventComm::EventType | type,
|  | RtecBase::handle_t | rt_info
| ) |

| Insert type-only dependency.

ACE_INLINE ACE_ConsumerQOS_Factory::operator const RtecEventChannelAdmin::ConsumerQOS & | ( | void |  | ) |

| Calls this->get_ConsumerQOS.

int ACE_ConsumerQOS_Factory::start_bitmask | ( | CORBA::ULong | source_mask,
|  | CORBA::ULong | type_mask
| ) |

| Insert a bitmask filter, this acts as a quick rejection mechanism for the subsequent filters.

int ACE_ConsumerQOS_Factory::start_conjunction_group | ( | int | nchildren = 0 | ) |

| The Event Channel waits until all the children have accepted at least one event, and then send them all as a single event to the consumer.

int ACE_ConsumerQOS_Factory::start_disjunction_group | ( | int | nchildren = 0 | ) |

| The consumer accepts any event that is accepted by at least one child.

int ACE_ConsumerQOS_Factory::start_logical_and_group | ( | int | nchildren = 0 | ) |

| The consumer only accepts events that pass all the filter expressions defined by the children.

int ACE_ConsumerQOS_Factory::start_negation | ( | void |  | ) |

| The consumer wants all the events *except* the group that follows.

## Member Data Documentation

int ACE_ConsumerQOS_Factory::designator_set_`[private]`

| Whether a start_XX_group has been called yet. This is to make sure that a designator is placed in the subscription list first.

TAO_EC_Event_Initializer ACE_ConsumerQOS_Factory::event_initializer_`[private]`

| If not zero this is a user-provided function used to initialize the events. When the event contains unions this is required to avoid marshaling and demarshaling of default initialized unions that (AFAIK) is not CORBA compliant.

RtecEventChannelAdmin::ConsumerQOS ACE_ConsumerQOS_Factory::qos_`[private]`

| The representation to be sent to the channel.

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

- Event_Utilities.h
- Event_Utilities.i
- Event_Utilities.cpp