TAO  2.1.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | Private Member Functions
TAO::Synch_Twoway_Invocation Class Reference

All the action for a synchronous twoway invocation happen here. More...

#include <Synch_Invocation.h>

Inheritance diagram for TAO::Synch_Twoway_Invocation:
Inheritance graph
[legend]
Collaboration diagram for TAO::Synch_Twoway_Invocation:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 Synch_Twoway_Invocation (CORBA::Object_ptr otarget, Profile_Transport_Resolver &resolver, TAO_Operation_Details &detail, bool response_expected=true)
 Constructor used by TAO::Invocation_Adapter.
Invocation_Status remote_twoway (ACE_Time_Value *max_wait_time)

Protected Member Functions

virtual Invocation_Status handle_user_exception (TAO_InputCDR &cdr)
Invocation_Status location_forward (TAO_InputCDR &cdr)
 Helper method used to handle location forwarded replies.
Invocation_Status handle_system_exception (TAO_InputCDR &cdr)
Invocation_Status wait_for_reply (ACE_Time_Value *max_wait_time, TAO_Synch_Reply_Dispatcher &rd, TAO_Bind_Dispatcher_Guard &bd)
 As the name suggests waits for a reply from the remote ORB.

Private Member Functions

Invocation_Status check_reply_status (TAO_Synch_Reply_Dispatcher &rd)

Detailed Description

All the action for a synchronous twoway invocation happen here.

An object of this type is created by TAO::Invocation_Adapter and invokes a method on this class. The method takes care of creating and sending a request, waiting for a reply and demarshalling the reply for the client.


Constructor & Destructor Documentation

TAO::Synch_Twoway_Invocation::Synch_Twoway_Invocation ( CORBA::Object_ptr  otarget,
Profile_Transport_Resolver resolver,
TAO_Operation_Details detail,
bool  response_expected = true 
)

Constructor used by TAO::Invocation_Adapter.

Parameters:
otargetThe original target on which this invocation was started. This is there to be passed up to its parent class.
resolverThe profile and transport holder.
detailOperation details of the invocation on the target
response_expectedFlag to indicate whether the operation encapsulated by op returns a response or not.

Member Function Documentation

Invocation_Status TAO::Synch_Twoway_Invocation::check_reply_status ( TAO_Synch_Reply_Dispatcher rd)
private

Helper method that checks the reply status of the replies and takes appropriate action. This method returns an exception when there is an error.

Invocation_Status TAO::Synch_Twoway_Invocation::handle_system_exception ( TAO_InputCDR cdr)
protected

Helper method used to handle system exceptions from the remote objects.

There has been a unanimous view that this is not the right way to do things. But a need to be compliant is forcing us into this.

Note:
A location forwarding loop may occur where a client is bounced from the original target to the forwarded target and back if the application is not equipped to handle retries of previously called targets. TAO may be able to help in this case but it ultimately ends up being an application issue.
Invocation_Status TAO::Synch_Twoway_Invocation::handle_user_exception ( TAO_InputCDR cdr)
protectedvirtual

This method is selectively made virtual, so that inherited classes can overload the user exception handling type. For example the DII needs a totally different method of user exception exception handling

Invocation_Status TAO::Synch_Twoway_Invocation::location_forward ( TAO_InputCDR cdr)
protected

Helper method used to handle location forwarded replies.

Invocation_Status TAO::Synch_Twoway_Invocation::remote_twoway ( ACE_Time_Value max_wait_time)

Method used by the adapter to kickstart an invocation to the remote object. There is a exception declaration in this method which ensures that the exceptions propogated by the remote objects are converted a CORBA exceptions for the clients. This method does a bunch of things necessary to create and send the invocation. This method is also nerve centre for the interceptor invocation points.

Invocation_Status TAO::Synch_Twoway_Invocation::wait_for_reply ( ACE_Time_Value max_wait_time,
TAO_Synch_Reply_Dispatcher rd,
TAO_Bind_Dispatcher_Guard bd 
)
protected

As the name suggests waits for a reply from the remote ORB.

This method returns an exception when there is an error.


The documentation for this class was generated from the following files: