text: // -*- C++ -*-
  //
  // interceptors.h,v 1.8 2001/03/01 18:11:52 othman Exp
  
  #ifndef TAO_INTERCEPTORS_H
  #define TAO_INTERCEPTORS_H
  
  #include "tao/PortableInterceptorC.h"
  #include "tao/LocalObject.h"
  #include "tao/ORB.h"
  
  #if !defined (ACE_LACKS_PRAGMA_ONCE)
  # pragma once
  #endif /* ACE_LACKS_PRAGMA_ONCE */
  
  #if defined(_MSC_VER)
  #if (_MSC_VER >= 1200)
  #pragma warning(push)
  #endif /* _MSC_VER >= 1200 */
  #pragma warning(disable:4250)
  #endif /* _MSC_VER */
  
  class Echo_Client_Request_Interceptor
    : public PortableInterceptor::ClientRequestInterceptor,
      public CORBA::LocalObject
  {
    // = Client-side echo interceptor.  For checking interceptor visually only.
  public:
    Echo_Client_Request_Interceptor (const char *orb_id);
    // ctor.
  
    virtual ~Echo_Client_Request_Interceptor ();
    // dtor.
  
    virtual void _add_ref (void);
    // Increment the reference count.
  
    virtual void _remove_ref (void);
    // Decrement the reference count.
  
    virtual char * name (TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));
    // Canonical name of the interceptor.
  
    virtual void destroy (TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));
  
    virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr
                            TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));
  
    virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri
                               TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                       PortableInterceptor::ForwardRequest));
  
    virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri
                                TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));
  
    virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr
                                TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                       PortableInterceptor::ForwardRequest));
  
    virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri
                                    TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                      PortableInterceptor::ForwardRequest));
  
  private:
    const char *myname_;
  
    CORBA::String_var orb_id_;
    // The ID of the ORB where this interceptor was created, usually
    // obtained from the ORBInitInfo
  
    CORBA::ORB_var orb_;
  };
  
  class Echo_Server_Request_Interceptor
    : public PortableInterceptor::ServerRequestInterceptor,
      public CORBA::LocalObject
  {
    // = Server-side echo interceptor.  For checking interceptor visually only.
  public:
    Echo_Server_Request_Interceptor (void);
    // cotr.
  
    ~Echo_Server_Request_Interceptor ();
    // dotr.
  
    virtual void _add_ref (void);
    // Increment the reference count.
  
    virtual void _remove_ref (void);
    // Decrement the reference count.
  
    virtual char * name (TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));
    // Canonical name of the interceptor.
  
    virtual void destroy (TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));
  
    virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri
                                  TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                       PortableInterceptor::ForwardRequest));
  
    virtual void receive_request_service_contexts (
          PortableInterceptor::ServerRequestInfo_ptr
          TAO_ENV_ARG_DECL_WITH_DEFAULTS)
        ACE_THROW_SPEC ((CORBA::SystemException,
                         PortableInterceptor::ForwardRequest));
  
    virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri
                             TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException));
  
    virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri
                                 TAO_ENV_ARG_DECL_WITH_DEFAULTS)
      ACE_THROW_SPEC ((CORBA::SystemException,
                       PortableInterceptor::ForwardRequest));
  
    virtual void send_other (PortableInterceptor::ServerRequestInfo_ptr
                             TAO_ENV_ARG_DECL_WITH_DEFAULTS)
        ACE_THROW_SPEC ((CORBA::SystemException,
                         PortableInterceptor::ForwardRequest));
  
  private:
    const char *myname_;
  };
  
  #if defined(_MSC_VER) && (_MSC_VER >= 1200)
  #pragma warning(pop)
  #endif /* _MSC_VER */
  
  #endif /* TAO_INTERCEPTORS_H */
  