00001 // -*- C++ -*- 00002 00003 // =================================================================== 00004 /** 00005 * @file Security_Current_Impl.h 00006 * 00007 * $Id: Security_Current_Impl.h 77001 2007-02-12 07:54:49Z johnnyw $ 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 = 0; 00066 //@} 00067 00068 /** 00069 * @name SecurityLevel2::Current Methods 00070 * 00071 * These methods are founds in the SecurityLevel2::Current 00072 * interface. 00073 */ 00074 //@{ 00075 /// Return the Credentials received from the client associate with 00076 /// the current request. 00077 virtual SecurityLevel2::ReceivedCredentials_ptr received_credentials () 00078 = 0; 00079 //@} 00080 00081 /// Return the unique tag that identifies the concrete subclass. 00082 virtual CORBA::ULong tag (void) const = 0; 00083 00084 }; 00085 00086 } // End Security namespace. 00087 } // End TAO namespace. 00088 00089 TAO_END_VERSIONED_NAMESPACE_DECL 00090 00091 #include /**/ "ace/post.h" 00092 00093 #endif /* TAO_SECURITY_CURRENT_IMPL_H */