00001 // -*- C++ -*- 00002 00003 // =================================================================== 00004 /** 00005 * @file Security_Current_Impl.h 00006 * 00007 * Security_Current_Impl.h,v 1.11 2006/03/14 06:14:35 jtc Exp 00008 * 00009 * @author Ossama Othman <ossama@uci.edu> 00010 */ 00011 // =================================================================== 00012 00013 #ifndef TAO_SECURITY_CURRENT_IMPL_H 00014 #define TAO_SECURITY_CURRENT_IMPL_H 00015 00016 #include /**/ "ace/pre.h" 00017 00018 #include "ace/config-all.h" 00019 00020 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00021 # pragma once 00022 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00023 00024 #include "orbsvcs/Security/security_export.h" 00025 #include "orbsvcs/SecurityLevel2C.h" 00026 00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00028 00029 namespace TAO 00030 { 00031 namespace Security 00032 { 00033 /** 00034 * @class Current_Impl 00035 * 00036 * @brief Base class for the TSS portion of any underlying 00037 * security mechanism. 00038 * 00039 * This class provides the same interface as the 00040 * SecurityLevel3::Current object. However, it is not derived 00041 * from that interface since we need to explicitly avoid virtual 00042 * inheritance so that it is safe to store subclasses in a "void 00043 * *" and later cast that pointer back to the subclass pointer 00044 * type. 00045 */ 00046 class TAO_Security_Export Current_Impl 00047 { 00048 public: 00049 00050 /// Destructor. 00051 virtual ~Current_Impl (void); 00052 00053 /** 00054 * @name SecurityLevel1::Current Methods 00055 * 00056 * These methods are founds in the SecurityLevel1::Current 00057 * interface. 00058 */ 00059 //@{ 00060 /// Return the security attributes corresponding to the types in 00061 /// the given attribute type list associated with the current 00062 /// request. 00063 virtual ::Security::AttributeList * get_attributes ( 00064 const ::Security::AttributeTypeList & attributes 00065 ACE_ENV_ARG_DECL) 00066 ACE_THROW_SPEC ((CORBA::SystemException)) = 0; 00067 //@} 00068 00069 /** 00070 * @name SecurityLevel2::Current Methods 00071 * 00072 * These methods are founds in the SecurityLevel2::Current 00073 * interface. 00074 */ 00075 //@{ 00076 /// Return the Credentials received from the client associate with 00077 /// the current request. 00078 virtual SecurityLevel2::ReceivedCredentials_ptr received_credentials ( 00079 ACE_ENV_SINGLE_ARG_DECL) 00080 ACE_THROW_SPEC ((CORBA::SystemException)) = 0; 00081 //@} 00082 00083 /// Return the unique tag that identifies the concrete subclass. 00084 virtual CORBA::ULong tag (void) const = 0; 00085 00086 }; 00087 00088 } // End Security namespace. 00089 } // End TAO namespace. 00090 00091 TAO_END_VERSIONED_NAMESPACE_DECL 00092 00093 #include /**/ "ace/post.h" 00094 00095 #endif /* TAO_SECURITY_CURRENT_IMPL_H */