ETCL_Filter.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 /**
00003  *  @file ETCL_Filter.h
00004  *
00005  *  $Id: ETCL_Filter.h 81422 2008-04-24 12:33:29Z johnnyw $
00006  *
00007  *  @author Pradeep Gore <pradeep@oomworks.com>
00008  */
00009 
00010 #ifndef TAO_Notify_ETCL_FILTER_H
00011 #define TAO_Notify_ETCL_FILTER_H
00012 #include /**/ "ace/pre.h"
00013 
00014 #include "orbsvcs/Notify/notify_serv_export.h"
00015 
00016 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00017 # pragma once
00018 #endif /* ACE_LACKS_PRAGMA_ONCE */
00019 
00020 #include "ace/Containers_T.h"
00021 #include "ace/Hash_Map_Manager.h"
00022 #include "ace/Atomic_Op.h"
00023 #include "orbsvcs/CosNotifyFilterS.h"
00024 #include "orbsvcs/Notify/Notify_Constraint_Interpreter.h"
00025 #include "ace/Null_Mutex.h"
00026 
00027 #if defined(_MSC_VER)
00028 #pragma warning(push)
00029 #pragma warning(disable:4250)
00030 #endif /* _MSC_VER */
00031 
00032 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00033 
00034 /**
00035  * @class TAO_ETCL_Filter
00036  *
00037  * @brief Implementation of CosNotifyFilter::Filter servant.
00038  *
00039  */
00040 class TAO_Notify_Serv_Export TAO_Notify_ETCL_Filter
00041   : public POA_CosNotifyFilter::Filter
00042 {
00043 public:
00044   /// Constructor
00045   TAO_Notify_ETCL_Filter (PortableServer::POA_ptr poa);
00046 
00047   /// Destructor
00048   virtual ~TAO_Notify_ETCL_Filter (void);
00049 
00050 protected:
00051   virtual char * constraint_grammar (void);
00052 
00053   virtual CosNotifyFilter::ConstraintInfoSeq * add_constraints (const CosNotifyFilter::ConstraintExpSeq & constraint_list);
00054 
00055   virtual void modify_constraints (const CosNotifyFilter::ConstraintIDSeq & del_list,
00056                                    const CosNotifyFilter::ConstraintInfoSeq & modify_list);
00057 
00058   virtual CosNotifyFilter::ConstraintInfoSeq * get_constraints (const CosNotifyFilter::ConstraintIDSeq & id_list);
00059 
00060   virtual CosNotifyFilter::ConstraintInfoSeq * get_all_constraints (void);
00061 
00062   virtual void remove_all_constraints (void);
00063 
00064   virtual void destroy (void);
00065 
00066   virtual CORBA::Boolean match (const CORBA::Any & filterable_data);
00067 
00068   virtual CORBA::Boolean match_structured (const CosNotification::StructuredEvent & filterable_data);
00069 
00070   virtual CORBA::Boolean match_typed (const CosNotification::PropertySeq & filterable_data);
00071 
00072   virtual CosNotifyFilter::CallbackID attach_callback (CosNotifyComm::NotifySubscribe_ptr callback);
00073 
00074   virtual void detach_callback (CosNotifyFilter::CallbackID callback);
00075 
00076   virtual CosNotifyFilter::CallbackIDSeq * get_callbacks (void);
00077 
00078 private:
00079   void add_constraints_i (const CosNotifyFilter::ConstraintInfoSeq& constraint_info_seq);
00080 
00081   void remove_all_constraints_i (void);
00082 
00083   /**
00084    * Structure for associating ConstraintInfo with an interpreter.
00085    */
00086   struct TAO_Notify_Constraint_Expr
00087   {
00088     /// Constraint Expression.
00089     CosNotifyFilter::ConstraintExp constr_expr;
00090 
00091     /// Constraint Interpreter.
00092     TAO_Notify_Constraint_Interpreter interpreter;
00093   };
00094 
00095   /// Lock to serialize access to data members.
00096   TAO_SYNCH_MUTEX lock_;
00097 
00098   /// Id generator for ConstraintInfo's.
00099   CORBA::Long constraint_expr_ids_;
00100 
00101   /// A list of the constraints stored in this filter.
00102   typedef ACE_Hash_Map_Manager <CosNotifyFilter::ConstraintID,
00103                                 TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,
00104                                 ACE_SYNCH_NULL_MUTEX>
00105   CONSTRAINT_EXPR_LIST;
00106 
00107   CONSTRAINT_EXPR_LIST constraint_expr_list_;
00108 
00109   PortableServer::POA_var poa_;
00110 };
00111 
00112 TAO_END_VERSIONED_NAMESPACE_DECL
00113 
00114 #if defined(_MSC_VER)
00115 #pragma warning(pop)
00116 #endif /* _MSC_VER */
00117 
00118 #include /**/ "ace/post.h"
00119 #endif /* TAO_ETCL_FILTER_H */

Generated on Tue Feb 2 17:45:29 2010 for TAO_CosNotification by  doxygen 1.4.7