Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TAO_ClientRequestInterceptor_Adapter Class Reference

A convenient helper class to invoke registered client request interceptors in client stubs. More...

#include <ClientInterceptorAdapter.h>

Collaboration diagram for TAO_ClientRequestInterceptor_Adapter:

Collaboration graph
[legend]
List of all members.

Public Methods

 TAO_ClientRequestInterceptor_Adapter (TAO_ClientRequestInterceptor_List::TYPE &interceptors, TAO_GIOP_Invocation *invocation, int &_invoke_status)
 ~TAO_ClientRequestInterceptor_Adapter (void)
PortableInterceptor Client Side Interception Points
Each of these methods corresponds to a client side interception point.

There are no "intermediate" interception points on the client side, only "starting" and "ending" interception points.

Todo:
The "send_poll()" and "receive_other()" (for AMI) PortableInterceptor interception points are missing.


void send_request (TAO_ClientRequestInfo_i *ri ACE_ENV_ARG_DECL)
 This method implements one of the "starting" client side interception points. More...

void receive_reply (TAO_ClientRequestInfo_i *ri ACE_ENV_ARG_DECL)
 This method implements one of the "ending" client side interception point. More...

void receive_exception (TAO_ClientRequestInfo_i *ri ACE_ENV_ARG_DECL)
 This method implements one of the "ending" client side interception point. More...

void receive_other (TAO_ClientRequestInfo_i *ri ACE_ENV_ARG_DECL)
 This method implements one of the "ending" client side interception point. More...


Protected Methods

void process_forward_request (TAO_ClientRequestInfo_i *ri, PortableInterceptor::ForwardRequest &exc ACE_ENV_ARG_DECL)
 Process the given PortableInterceptor::ForwardRequest exception, i.e. invoke the receive_other() interception point, in addition to notifying the Invocation object of the LOCATION_FORWARD. More...


Private Attributes

TAO_ClientRequestInterceptor_List::TYPEinterceptors_
 Reference to the list of registered interceptors. More...

TAO_GIOP_Invocationinvocation_
 Pointer to the GIOP invocation object for the current request. More...

int & invoke_status_
 Reference to the invocation status obtained from and returned to the stub. Needed to support the PortableInterceptor::ForwardRequest exception. More...

const size_t len_
 Cache the length of the interceptor list so that we don't have to compute it at each stage of the current interception. More...

size_t stack_size_
 The number of interceptors "pushed" onto the logical flow stack. This is used when unwinding the flow stack. More...

TAO_ClientRequestInfoinfo_

Detailed Description

A convenient helper class to invoke registered client request interceptors in client stubs.

This class invokes all registered interceptors at interception point, and enforces flow rules dictated by the Portable Interceptor specification/chapter.


Constructor & Destructor Documentation

ACE_INLINE TAO_ClientRequestInterceptor_Adapter::TAO_ClientRequestInterceptor_Adapter TAO_ClientRequestInterceptor_List::TYPE   interceptors,
TAO_GIOP_Invocation   invocation,
int &    invoke_status
 

TAO_ClientRequestInterceptor_Adapter::~TAO_ClientRequestInterceptor_Adapter void   
 


Member Function Documentation

void TAO_ClientRequestInterceptor_Adapter::process_forward_request TAO_ClientRequestInfo_i   ri,
PortableInterceptor::ForwardRequest &exc    ACE_ENV_ARG_DECL
[protected]
 

Process the given PortableInterceptor::ForwardRequest exception, i.e. invoke the receive_other() interception point, in addition to notifying the Invocation object of the LOCATION_FORWARD.

void TAO_ClientRequestInterceptor_Adapter::receive_exception TAO_ClientRequestInfo_i *ri    ACE_ENV_ARG_DECL
 

This method implements one of the "ending" client side interception point.

void TAO_ClientRequestInterceptor_Adapter::receive_other TAO_ClientRequestInfo_i *ri    ACE_ENV_ARG_DECL
 

This method implements one of the "ending" client side interception point.

void TAO_ClientRequestInterceptor_Adapter::receive_reply TAO_ClientRequestInfo_i *ri    ACE_ENV_ARG_DECL
 

This method implements one of the "ending" client side interception point.

void TAO_ClientRequestInterceptor_Adapter::send_request TAO_ClientRequestInfo_i *ri    ACE_ENV_ARG_DECL
 

This method implements one of the "starting" client side interception points.


Member Data Documentation

TAO_ClientRequestInfo* TAO_ClientRequestInterceptor_Adapter::info_ [private]
 

Note:
The fact that a pointer to the PortableInterceptor::ClientRequestInfo object in TSS is cached here assumes that all client side interception points are invoked in the same thread. This may not be the case for AMI! In that case, we'll have to perform a TSS access in each interception point.

TAO_ClientRequestInterceptor_List::TYPE& TAO_ClientRequestInterceptor_Adapter::interceptors_ [private]
 

Reference to the list of registered interceptors.

TAO_GIOP_Invocation* TAO_ClientRequestInterceptor_Adapter::invocation_ [private]
 

Pointer to the GIOP invocation object for the current request.

int& TAO_ClientRequestInterceptor_Adapter::invoke_status_ [private]
 

Reference to the invocation status obtained from and returned to the stub. Needed to support the PortableInterceptor::ForwardRequest exception.

const size_t TAO_ClientRequestInterceptor_Adapter::len_ [private]
 

Cache the length of the interceptor list so that we don't have to compute it at each stage of the current interception.

size_t TAO_ClientRequestInterceptor_Adapter::stack_size_ [private]
 

The number of interceptors "pushed" onto the logical flow stack. This is used when unwinding the flow stack.


The documentation for this class was generated from the following files:
Generated on Thu Oct 10 18:27:03 2002 for TAO by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001