ETCL_Filter.h

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

Generated on Sun Jan 27 15:39:54 2008 for TAO_CosNotification by doxygen 1.3.6