00001 // -*- C++ -*- 00002 00003 // =================================================================== 00004 /** 00005 * @file SL3_SecurityCurrent_Impl.h 00006 * 00007 * $Id: SL3_SecurityCurrent_Impl.h 77001 2007-02-12 07:54:49Z johnnyw $ 00008 * 00009 * @author Ossama Othman <ossama@dre.vanderbilt.edu> 00010 */ 00011 // =================================================================== 00012 00013 #ifndef TAO_SL3_SECURITY_CURRENT_IMPL_H 00014 #define TAO_SL3_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/SecurityLevel3C.h" 00026 00027 00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00029 00030 namespace TAO 00031 { 00032 namespace SL3 00033 { 00034 /** 00035 * @class SecurityCurrent_Impl 00036 * 00037 * @brief Base class for the TSS portion of any underlying 00038 * security mechanism. 00039 * 00040 * This class provides the same interface as the 00041 * SecurityLevel3::SecurityCurrent object. However, it is not 00042 * derived from that interface since we need to explicitly avoid 00043 * virtual inheritance so that it is safe to store subclasses in a 00044 * "void * *" and later cast that pointer back to the subclass 00045 * pointer type. 00046 */ 00047 class TAO_Security_Export SecurityCurrent_Impl 00048 { 00049 public: 00050 00051 /// Destructor. 00052 virtual ~SecurityCurrent_Impl (void); 00053 00054 /** 00055 * @name SecurityLevel3::Current Methods 00056 * 00057 * These methods are founds in the SecurityLevel3::Current 00058 * interface. 00059 */ 00060 //@{ 00061 /// Return the Credentials received from the client associate with 00062 /// the current request. 00063 virtual SecurityLevel3::ClientCredentials_ptr client_credentials () 00064 = 0; 00065 00066 /// Is the current request local? 00067 virtual CORBA::Boolean request_is_local () 00068 = 0; 00069 //@} 00070 00071 /// Return the unique tag that identifies the concrete subclass. 00072 virtual CORBA::ULong tag (void) const = 0; 00073 00074 }; 00075 00076 } // End Security namespace. 00077 } // End TAO namespace. 00078 00079 TAO_END_VERSIONED_NAMESPACE_DECL 00080 00081 #include /**/ "ace/post.h" 00082 00083 #endif /* TAO_SL3_SECURITY_CURRENT_IMPL_H */