⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssliop_current.h

📁 这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用于网络游戏医学图像网关的高qos要求.更详细的内容可阅读相应的材料
💻 H
字号:
// -*- C++ -*-

// ===================================================================
/**
 *  @file   SSLIOP_Current.h
 *
 *  SSLIOP_Current.h,v 1.10 2003/10/29 03:56:34 bala Exp
 *
 *  @author Ossama Othman <ossama@uci.edu>
 */
// ===================================================================

#ifndef TAO_SSLIOP_CURRENT_H
#define TAO_SSLIOP_CURRENT_H

#include /**/ "ace/pre.h"

#include "SSLIOP_Export.h"

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

#include "SSLIOP_Current_Impl.h"

#include "orbsvcs/SSLIOPC.h"
#include "tao/ORB_Core.h"

// This is to remove "inherits via dominance" warnings from MSVC.
// MSVC is being a little too paranoid.
#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */


class TAO_SSLIOP_Current;
class TAO_SSLIOP_Current_var;
typedef TAO_SSLIOP_Current *TAO_SSLIOP_Current_ptr;


/**
 * @class TAO_SSLIOP_Current
 *
 * @brief Implementation of the TAO SSLIOP::Current extension.
 *
 * This object can be used to obtain SSL session related information
 * about the current execution context.  For example, SSL peer
 * certificate chains for the current request can be obtained from
 * this object.
 */
class TAO_SSLIOP_Export TAO_SSLIOP_Current
  : public SSLIOP::Current,
    public TAO_Local_RefCounted_Object
{
public:

  /// Constructor.
  TAO_SSLIOP_Current (TAO_ORB_Core *orb_core);

  /// Return the peer certificate associated with the current
  /// request.
  virtual SSLIOP::ASN_1_Cert * get_peer_certificate (
      ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
    ACE_THROW_SPEC ((CORBA::SystemException,
                     SSLIOP::Current::NoContext));

  /// Return the certificate chain associated with the current
  /// execution context.  If no SSL session is being used for the
  /// request or upcall, then the NoContext exception is raised.
  ///
  /// On the client side, the chain does include the peer (server)
  /// certficate.  However, the certificate chain on the server side
  /// does NOT contain the peer (client) certificate.
  virtual SSLIOP::SSL_Cert * get_peer_certificate_chain (
      ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
    ACE_THROW_SPEC ((CORBA::SystemException,
                     SSLIOP::Current::NoContext));

  /// Returns true if the current execution context is not within a
  /// SSL session.  This method is mostly useful as an inexpensive
  /// means of determining whether or not SSL session state is
  /// available.
  virtual CORBA::Boolean no_context (
      ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
    ACE_THROW_SPEC ((CORBA::SystemException));

  /// Set the TSS slot ID assigned to this object.
  void tss_slot (size_t slot);

  /// Setup the Current.
  void setup (TAO_SSLIOP_Current_Impl *&prev_impl,
              TAO_SSLIOP_Current_Impl *new_impl,
              CORBA::Boolean &setup_done);

  /// Teardown the Current for this request.
  void teardown (TAO_SSLIOP_Current_Impl *prev_impl,
                 CORBA::Boolean &setup_done);

  /**
   * @name Downcast and Reference Counting Methods
   *
   * These are basically the same methods generated by the IDL
   * compiler for all IDL interfaces.
   */
  //@{
#if !defined(__GNUC__) || !defined (ACE_HAS_GNUG_PRE_2_8)
  typedef TAO_SSLIOP_Current_ptr _ptr_type;
  typedef TAO_SSLIOP_Current_var _var_type;
#endif /* ! __GNUC__ || g++ >= 2.8 */

  static int _tao_class_id;

  // The static operations.
  static TAO_SSLIOP_Current_ptr _duplicate (TAO_SSLIOP_Current_ptr obj);

  static TAO_SSLIOP_Current_ptr _narrow (
      CORBA::Object_ptr obj
      ACE_ENV_ARG_DECL_WITH_DEFAULTS);


  static TAO_SSLIOP_Current_ptr _unchecked_narrow (
      CORBA::Object_ptr obj
      ACE_ENV_ARG_DECL_WITH_DEFAULTS);


  static TAO_SSLIOP_Current_ptr _nil (void)
    {
      return (TAO_SSLIOP_Current_ptr)0;
    }

  virtual const char* _interface_repository_id (void) const;
  //@}

protected:

  /// Destructor
  /// Protected to force allocation on the heap.
  ~TAO_SSLIOP_Current (void);

  /// Set the TSS SSLIOP::Current implementation.
  int implementation (TAO_SSLIOP_Current_Impl *impl);

  /// Return the TSS SSLIOP::Current implementation.
  TAO_SSLIOP_Current_Impl *implementation (void);

private:

  /// Prevent copying through the copy constructor and the assignment
  /// operator.
  //@{
  ACE_UNIMPLEMENTED_FUNC (
    TAO_SSLIOP_Current (const TAO_SSLIOP_Current &))
  ACE_UNIMPLEMENTED_FUNC (void operator= (const TAO_SSLIOP_Current &))
  //@}

private:

  /// TSS slot assigned to this object.
  size_t tss_slot_;

  /// Pointer to the ORB Core corresponding to the ORB with which this
  /// object is registered.
  TAO_ORB_Core *orb_core_;

};

class TAO_SSLIOP_Current_var : public TAO_Base_var
{
public:
  TAO_SSLIOP_Current_var (void); // default constructor
  TAO_SSLIOP_Current_var (TAO_SSLIOP_Current_ptr p) : ptr_ (p) {}
  TAO_SSLIOP_Current_var (const TAO_SSLIOP_Current_var &); // copy constructor
  ~TAO_SSLIOP_Current_var (void); // destructor

  TAO_SSLIOP_Current_var &operator= (TAO_SSLIOP_Current_ptr);
  TAO_SSLIOP_Current_var &operator= (const TAO_SSLIOP_Current_var &);
  TAO_SSLIOP_Current_ptr operator-> (void) const;

  operator const TAO_SSLIOP_Current_ptr &() const;
  operator TAO_SSLIOP_Current_ptr &();
  // in, inout, out, _retn
  TAO_SSLIOP_Current_ptr in (void) const;
  TAO_SSLIOP_Current_ptr &inout (void);
  TAO_SSLIOP_Current_ptr &out (void);
  TAO_SSLIOP_Current_ptr _retn (void);
  TAO_SSLIOP_Current_ptr ptr (void) const;

  // Hooks used by template sequence and object manager classes
  // for non-defined forward declared interfaces.
  static TAO_SSLIOP_Current_ptr tao_duplicate (TAO_SSLIOP_Current_ptr);
  static void tao_release (TAO_SSLIOP_Current_ptr);
  static TAO_SSLIOP_Current_ptr tao_nil (void);
  static TAO_SSLIOP_Current_ptr tao_narrow (
      CORBA::Object *
      ACE_ENV_ARG_DECL_NOT_USED
    );
  static CORBA::Object * tao_upcast (void *);

private:
  TAO_SSLIOP_Current_ptr ptr_;
  // Unimplemented - prevents widening assignment.
  TAO_SSLIOP_Current_var (const TAO_Base_var &rhs);
  TAO_SSLIOP_Current_var &operator= (const TAO_Base_var &rhs);
};


#if defined (__ACE_INLINE__)
# include "SSLIOP_Current.inl"
#endif /* __ACE_INLINE__ */

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

#include /**/ "ace/post.h"

#endif  /* TAO_SSLIOP_CURRENT_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -