00001 // $Id: IORManip_Filter.h 78278 2007-05-07 11:46:18Z elliott_c $ 00002 00003 // ========================================================================= 00004 // 00005 // = LIBRARY 00006 // TAO 00007 // 00008 // = FILENAME 00009 // IORManip_Filter.h 00010 // 00011 // = AUTHOR 00012 // Chad Elliott <elliott_c@ociweb.com> 00013 // 00014 // ========================================================================= 00015 00016 #ifndef TAO_IORMANIP_FILTER_H 00017 #define TAO_IORMANIP_FILTER_H 00018 #include /**/ "ace/pre.h" 00019 00020 #include "tao/GIOP_Message_State.h" 00021 00022 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00023 # pragma once 00024 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00025 00026 #include "tao/corbafwd.h" 00027 #include "tao/IORManipulation/ior_manip_export.h" 00028 #include "tao/Environment.h" 00029 #include "ace/CORBA_macros.h" 00030 00031 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00032 00033 class TAO_Profile; 00034 class TAO_MProfile; 00035 00036 class TAO_IORManip_Export TAO_IORManip_Filter 00037 { 00038 public: 00039 /// Constructor. 00040 TAO_IORManip_Filter (void); 00041 00042 /// Destructor. 00043 virtual ~TAO_IORManip_Filter (void); 00044 00045 /// Perform filtering using the profile passed in as a guide. 00046 /// If no profile is provided, filter using the profile_matches() method. 00047 CORBA::Object_ptr sanitize_profiles (CORBA::Object_ptr object, 00048 TAO_Profile* profile = 0); 00049 00050 protected: 00051 00052 /// This will be the bulk of the filtering code. 00053 virtual void filter_and_add (TAO_Profile* profile, 00054 TAO_MProfile& profiles, 00055 TAO_Profile* guideline = 0) = 0; 00056 00057 00058 private: 00059 00060 /// The sanitize_profiles() methods call this to do the work. 00061 CORBA::Object_ptr sanitize (CORBA::Object_ptr object, 00062 TAO_Profile* profile); 00063 }; 00064 00065 TAO_END_VERSIONED_NAMESPACE_DECL 00066 00067 #include /**/ "ace/post.h" 00068 #endif /* TAO_IORMANIP_FILTER_H */