00001 // -*- C++ -*- 00002 /** 00003 * @file EC_Filter_Builder.h 00004 * 00005 * $Id: EC_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_FILTER_BUILDER_H 00016 #define TAO_EC_FILTER_BUILDER_H 00017 00018 #include /**/ "ace/pre.h" 00019 00020 #include "orbsvcs/RtecEventChannelAdminC.h" 00021 00022 #include /**/ "orbsvcs/Event/event_serv_export.h" 00023 00024 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00025 # pragma once 00026 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00027 00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00029 00030 class TAO_EC_Filter; 00031 class TAO_EC_ProxyPushSupplier; 00032 00033 /** 00034 * @class TAO_EC_Filter_Builder 00035 * 00036 * @brief Abstract base class for the filter builders. 00037 * 00038 * The creation of a filter hierarchy is controlled by a 00039 * Filter_Builder. The relationship between TAO_EC_Filter and 00040 * TAO_EC_Filter_Builder follows the "Builder Pattern" (Gamma et 00041 * al.) 00042 */ 00043 class TAO_RTEvent_Serv_Export TAO_EC_Filter_Builder 00044 { 00045 public: 00046 /// destructor... 00047 virtual ~TAO_EC_Filter_Builder (void); 00048 00049 /// Create the filter, the caller must assume ownership of the filter 00050 /// returned. 00051 virtual TAO_EC_Filter* 00052 build (TAO_EC_ProxyPushSupplier *supplier, 00053 RtecEventChannelAdmin::ConsumerQOS& qos) const = 0; 00054 00055 }; 00056 00057 // **************************************************************** 00058 00059 /** 00060 * @class TAO_EC_Null_Filter_Builder 00061 * 00062 * @brief A simple implementation of the filter builder. 00063 * 00064 * Simply creates a Null_Filter in every case. 00065 */ 00066 class TAO_RTEvent_Serv_Export TAO_EC_Null_Filter_Builder : public TAO_EC_Filter_Builder 00067 { 00068 public: 00069 /// constructor. 00070 TAO_EC_Null_Filter_Builder (void); 00071 00072 /// destructor... 00073 virtual ~TAO_EC_Null_Filter_Builder (void); 00074 00075 // = The TAO_EC_Filter_Builder methods... 00076 TAO_EC_Filter* build (TAO_EC_ProxyPushSupplier *supplier, 00077 RtecEventChannelAdmin::ConsumerQOS& qos) const; 00078 }; 00079 00080 TAO_END_VERSIONED_NAMESPACE_DECL 00081 00082 // **************************************************************** 00083 00084 #if defined (__ACE_INLINE__) 00085 #include "orbsvcs/Event/EC_Filter_Builder.inl" 00086 #endif /* __ACE_INLINE__ */ 00087 00088 #include /**/ "ace/post.h" 00089 00090 #endif /* TAO_EC_FILTER_BUILDER_H */