summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/CSIv2/CSS_RequestInterceptor.h
blob: f0e2ef2ae2ea9faf3a4ee0b6043da54b63e49bf9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// -*- C++ -*-

//=============================================================================
/**
 * @file CSS_RequestInterceptor.h
 *
 * $Id$
 *
 * Implementation header for the client request interceptor for the
 * Security Attribute Service (client side).
 *
 * @author Ossama Othman <ossama@dre.vanderbilt.edu>
 */
//=============================================================================


#ifndef TAO_CSS_REQUEST_INTERCEPTOR_H
#define TAO_CSS_REQUEST_INTERCEPTOR_H

#include "ace/pre.h"
#include "orbsvcs/Security/security_export.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "orbsvcs/CSIC.h"

#include "tao/PortableInterceptorC.h"
#include "tao/LocalObject.h"

#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */

namespace TAO
{
  /**
   * @class CSS_RequestInterceptor
   *
   * @brief Client Security Service (CSS) client request interceptor.
   *
   * This client request interceptor implements Security Attribute
   * Service functionality of the Client Security Service.
   */
  class TAO_Security_Export CSS_RequestInterceptor
  : public virtual PortableInterceptor::ClientRequestInterceptor,
    public virtual TAO_Local_RefCounted_Object
  {
  public:

    /// Constructor.
    CSS_RequestInterceptor (void);

    /**
     * @name Methods Required by the Client Request Interceptor
     * Interface
     *
     * These are methods that must be implemented since they are pure
     * virtual in the abstract base class.  They are the canonical
     * methods required for all client request interceptors.
     */
    //@{
    /// Return the name of this ClientRequestinterceptor.
    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 send_request (PortableInterceptor::ClientRequestInfo_ptr ri
                               ACE_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                       PortableInterceptor::ForwardRequest));

    virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr ri
                            ACE_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));

    virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri
                                ACE_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));

    virtual void receive_exception (
        PortableInterceptor::ClientRequestInfo_ptr ri
        ACE_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                       PortableInterceptor::ForwardRequest));

    virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr ri
                                ACE_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                       PortableInterceptor::ForwardRequest));
    //@}

  private:

    ///
    bool extract_sas_context (PortableInterceptor::ClientRequestInfo_ptr info,
                              CSI::SASContextBody & sas_context
                              ACE_ENV_ARG_DECL);

    void get_authorization_token (CSI::AuthorizationToken & t
                                  ACE_ENV_ARG_DECL);

    void get_identity_token (CSI::IdentityToken & t
                             ACE_ENV_ARG_DECL);

    void get_gss_token (CSI::GSSToken & t
                        ACE_ENV_ARG_DECL);

    void complete_context (const CSI::CompleteEstablishContext & /* cec */
                           ACE_ENV_ARG_DECL);

    void invalidate_context (const CSI::ContextError & /* ce */
                             ACE_ENV_ARG_DECL);

  };

}  // End TAO namespace


#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */

#include "ace/post.h"

#endif  /* TAO_CSS_REQUEST_INTERCEPTOR_H */