TAO  2.2.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
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
Collaboration diagram for TAO::Synch_Twoway_Invocation:
Collaboration graph

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. More...
Invocation_Status remote_twoway (ACE_Time_Value *max_wait_time)
void set_retry_state (Invocation_Retry_State *retry_state)
- Public Member Functions inherited from TAO::Remote_Invocation
 Remote_Invocation (CORBA::Object_ptr otarget, Profile_Transport_Resolver &resolver, TAO_Operation_Details &detail, bool response_expected)
- Public Member Functions inherited from TAO::Invocation_Base
virtual ~Invocation_Base (void)
TAO_Stubstub (void) const
 Accessor and mutator methods. More...
CORBA::Object_ptr forwarded_reference (void)
void forwarded_reference (CORBA::Object_ptr o)
 Accessor and mutator methods. More...
TAO_Service_Contextrequest_service_context (void)
 Accessors for the service context list. More...
TAO_Service_Contextreply_service_context (void)
 Accessor and mutator methods. More...
CORBA::Object_ptr steal_forwarded_reference (void)
 Return the forwarded object location by loosing ownership. More...
CORBA::Object_ptr effective_target (void) const
 Return the effective target of the invocation. More...
CORBA::Object_ptr target (void) const
 Return the target object. More...
CORBA::Boolean response_expected (void) const
 Does this invocation return a response? More...
GIOP::ReplyStatusType reply_status (void) const
 Accessor of reply_status of the invocation. More...
void reply_status (GIOP::ReplyStatusType s)
 Mutator of reply_status of the invocation. More...
TAO_Operation_Detailsoperation_details (void)
 The operaton details of the invocation. More...
size_t & stack_size (void)
CORBA::Exceptioncaught_exception (void)
 The client requestor adapter. More...
TAO::Invocation_Status invoke_status (void) const
 Invocation status. More...
void invoke_status (Invocation_Status s)
 Mutator to set the invocation status. More...
PortableInterceptor::ReplyStatus pi_reply_status (void) const
 The client requestor adapter. More...
bool is_remote_request () const

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. More...
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. More...
- Protected Member Functions inherited from TAO::Remote_Invocation
void init_target_spec (TAO_Target_Specification &spec, TAO_OutputCDR &output)
 Initialize the spec. More...
void write_header (TAO_OutputCDR &out_stream)
 Write the GIOP header into the stream. More...
void marshal_data (TAO_OutputCDR &cdr)
 Marshal the arguments into the stream. More...
Invocation_Status send_message (TAO_OutputCDR &cdr, TAO_Message_Semantics message_semantics, ACE_Time_Value *max_wait_time)
 Write the message onto the socket. More...
- Protected Member Functions inherited from TAO::Invocation_Base
 Invocation_Base (CORBA::Object_ptr otarget, CORBA::Object_ptr target, TAO_Stub *stub, TAO_Operation_Details &op, bool response_expected, bool request_is_remote)
Invocation_Status send_request_interception (void)
Invocation_Status receive_reply_interception (void)
Invocation_Status receive_other_interception (void)
PortableInterceptor::ReplyStatus handle_any_exception (CORBA::Exception *e)
PortableInterceptor::ReplyStatus handle_all_exception (void)
 The client requestor adapter. More...

Protected Attributes

- Protected Attributes inherited from TAO::Remote_Invocation
 Our resolver. More...
- Protected Attributes inherited from TAO::Invocation_Base
 The operation details on which we are operating on. More...
CORBA::Object_var forwarded_to_
 Forwarded object reference. More...
bool response_expected_
 Is response expected? More...
GIOP::ReplyStatusType reply_status_
 A GIOP reply status of the invocation. More...
 The client requestor adapter. More...
 The client requestor adapter. More...
size_t stack_size_
 The client requestor adapter. More...
TAO::Invocation_Status invoke_status_
 The client requestor adapter. More...

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.

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)

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)

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.

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)

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)

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.

void TAO::Synch_Twoway_Invocation::set_retry_state ( Invocation_Retry_State retry_state)

Indicate that retry state should be tracked and controlled in the presense of exceptions.

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 

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

This method returns an exception when there is an error.

Member Data Documentation

Invocation_Retry_State* TAO::Synch_Twoway_Invocation::retry_state_

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