summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Invocation_Interceptor.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Invocation_Interceptor.h')
-rw-r--r--trunk/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Invocation_Interceptor.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Invocation_Interceptor.h b/trunk/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Invocation_Interceptor.h
new file mode 100644
index 00000000000..9ab7aaffad1
--- /dev/null
+++ b/trunk/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Invocation_Interceptor.h
@@ -0,0 +1,148 @@
+// -*- C++ -*-
+
+// ===================================================================
+/**
+ * @file SSLIOP_Invocation_Interceptor.h
+ *
+ * $Id$
+ *
+ * @author Ossama Othman <ossama@uci.edu>
+ */
+// ===================================================================
+
+#ifndef TAO_SSLIOP_INVOCATION_INTERCEPTOR_H
+#define TAO_SSLIOP_INVOCATION_INTERCEPTOR_H
+
+#include /**/ "ace/pre.h"
+
+#include "orbsvcs/SSLIOP/SSLIOP_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "orbsvcs/SSLIOPC.h"
+#include "tao/PortableInterceptorC.h"
+#include "tao/PI_Server/PI_Server.h"
+#include "tao/LocalObject.h"
+
+// This is to remove "inherits via dominance" warnings from MSVC.
+// MSVC is being a little too paranoid.
+#if defined (_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+namespace TAO
+{
+ namespace SSLIOP
+ {
+ /**
+ * @class Server_Invocation_Interceptor
+ *
+ * @brief Secure invocation server request interceptor.
+ *
+ * This server request interceptor rejects insecure request
+ * invocations if the effective target object policy requires
+ * secure invocations.
+ */
+ class Server_Invocation_Interceptor
+ : public virtual PortableInterceptor::ServerRequestInterceptor,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ /// Constructor.
+ Server_Invocation_Interceptor (::SSLIOP::Current_ptr current,
+ ::Security::QOP qop);
+
+ /**
+ * @name PortableInterceptor::ServerRequestInterceptor Methods
+ *
+ * Methods required by the
+ * PortableInterceptor::ServerRequestInterceptor interface.
+ */
+ //@{
+ virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_request_service_contexts (
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_request (
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_reply (
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void send_exception (
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_other (
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+ //@}
+
+ protected:
+
+ /// Destructor
+ /**
+ * Protected destructor to force deallocation by the reference
+ * counting mechanism.
+ */
+ ~Server_Invocation_Interceptor (void);
+
+ private:
+
+ /**
+ * @name Copying and Assignment
+ *
+ * Protected to prevent copying through the copy constructor and the
+ * assignment operator.
+ */
+ //@{
+ Server_Invocation_Interceptor (const Server_Invocation_Interceptor &);
+ void operator= (const Server_Invocation_Interceptor &);
+ //@}
+
+ private:
+
+ /// Reference to the current SSLIOP execution context.
+ ::SSLIOP::Current_var ssliop_current_;
+
+ /// The default quality-of-protection settings in use.
+ ::Security::QOP qop_;
+
+ };
+
+ } // End SSLIOP namespace.
+} // End TAO namespace.
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+#if defined (_MSC_VER)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#include /**/ "ace/post.h"
+
+#endif /* TAO_SSLIOP_INVOCATION_INTERCEPTOR_H */