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 Member Functions |
| 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 Member Functions |
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
Member Function Documentation
|
Allows conversions to ConsumerQOS, which is expected by the PushSupplierProxy::connect_push_consumer interface. |
|
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. |
|
Insert the subscribe structure describing the event and receiving method into the current group. |
|
This will be inserted as type ACE_ES_EVENT_ACT.
|
|
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.
|
|
Insert source-only dependency.
|
|
Register temporal dependency. type designates interval or deadline timeout that will occur every interval. |
|
Insert type-only dependency.
|
|
Calls this->get_ConsumerQOS.
|
|
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
|
Whether a start_XX_group has been called yet. This is to make sure that a designator is placed in the subscription list first. |
|
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. |
|
The representation to be sent to the channel.
|
The documentation for this class was generated from the following files:
Generated on Thu Feb 10 20:51:50 2005 for TAO_RTEvent by
1.3.9.1