00001 /* -*- C++ -*- */ 00002 /** 00003 * @file EC_Prefix_Filter_Builder.h 00004 * 00005 * $Id: EC_Prefix_Filter_Builder.h 76589 2007-01-25 18:04:11Z elliott_c $ 00006 * 00007 * @author Carlos O'Ryan (coryan@cs.wustl.edu) 00008 * 00009 * Based on previous work by Tim Harrison (harrison@cs.wustl.edu) and 00010 * other members of the DOC group. More details can be found in: 00011 * 00012 * http://doc.ece.uci.edu/~coryan/EC/index.html 00013 */ 00014 00015 #ifndef TAO_EC_PREFIX_FILTER_BUILDER_H 00016 #define TAO_EC_PREFIX_FILTER_BUILDER_H 00017 #include /**/ "ace/pre.h" 00018 00019 #include "orbsvcs/Event/EC_Filter_Builder.h" 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 # pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 00026 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00027 00028 class TAO_EC_Filter; 00029 class TAO_EC_Event_Channel_Base; 00030 00031 /** 00032 * @class TAO_EC_Prefix_Filter_Builder 00033 * 00034 * @brief Implement a builder for the fundamental filters. 00035 * 00036 * The prefix filtering mechanisms in the Event channel 00037 * (source/type based filtering + disjunctions and conjunctions) 00038 * are constructed using this class. 00039 */ 00040 class TAO_RTEvent_Serv_Export TAO_EC_Prefix_Filter_Builder : public TAO_EC_Filter_Builder 00041 { 00042 public: 00043 /// constructor. 00044 TAO_EC_Prefix_Filter_Builder (TAO_EC_Event_Channel_Base* ec); 00045 00046 /// destructor... 00047 virtual ~TAO_EC_Prefix_Filter_Builder (void); 00048 00049 // = The TAO_EC_Filter_Builder methods... 00050 TAO_EC_Filter* build (TAO_EC_ProxyPushSupplier *supplier, 00051 RtecEventChannelAdmin::ConsumerQOS& qos) const; 00052 00053 private: 00054 /// Recursively build the filter tree. 00055 TAO_EC_Filter* recursive_build (TAO_EC_ProxyPushSupplier *supplier, 00056 RtecEventChannelAdmin::ConsumerQOS& qos, 00057 CORBA::ULong& pos) const; 00058 00059 private: 00060 /// The event channel. 00061 TAO_EC_Event_Channel_Base* event_channel_; 00062 }; 00063 00064 TAO_END_VERSIONED_NAMESPACE_DECL 00065 00066 #if defined (__ACE_INLINE__) 00067 #include "orbsvcs/Event/EC_Prefix_Filter_Builder.inl" 00068 #endif /* __ACE_INLINE__ */ 00069 00070 #include /**/ "ace/post.h" 00071 #endif /* TAO_EC_PREFIX_FILTER_BUILDER_H */