diff options
author | bala <balanatarajan@users.noreply.github.com> | 2003-10-28 18:31:01 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2003-10-28 18:31:01 +0000 |
commit | c20c95d4d526d887c9782960a3ff73f63c3c1c85 (patch) | |
tree | fd6ae8c3db752254802dfaafd1543974a4741e47 /TAO/tao/Synch_Invocation.h | |
parent | 3d20d6aedf2b56b86fe2a386777c7afbf1c19c93 (diff) | |
download | ATCD-c20c95d4d526d887c9782960a3ff73f63c3c1c85.tar.gz |
ChangeLogTag:Tue Oct 28 12:02:47 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/tao/Synch_Invocation.h')
-rw-r--r-- | TAO/tao/Synch_Invocation.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/TAO/tao/Synch_Invocation.h b/TAO/tao/Synch_Invocation.h new file mode 100644 index 00000000000..68aaeb2c8af --- /dev/null +++ b/TAO/tao/Synch_Invocation.h @@ -0,0 +1,126 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Synch_Invocation.h + * + * $Id$ + * + * + * @author Balachandran Natarajan <bala@dre.vanderbilt.edu> + */ +//============================================================================= + +#ifndef TAO_SYNCH_INVOCATION_H +#define TAO_SYNCH_INVOCATION_H +#include /**/ "ace/pre.h" + +#include "tao/Remote_Invocation.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/Exception.h" + +class TAO_Operation_Details; +class TAO_Synch_Reply_Dispatcher; +class TAO_InputCDR; +class ACE_Time_Value; +class TAO_Bind_Dispatcher_Guard; + +namespace CORBA +{ + class SystemException; +} + +namespace TAO +{ + class Profile_Transport_Resolver; + + class TAO_Export Synch_Twoway_Invocation : public Remote_Invocation + { + public: + Synch_Twoway_Invocation (CORBA::Object_ptr otarget, + Profile_Transport_Resolver &resolver, + TAO_Operation_Details &detail, + bool response_expected = true); + + Invocation_Status remote_twoway (ACE_Time_Value *max_wait_time + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::Exception)); + + protected: + + /** + * 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 + */ + virtual Invocation_Status handle_user_exception (TAO_InputCDR &cdr + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::Exception)); + + Invocation_Status location_forward (TAO_InputCDR &cdr + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + + + Invocation_Status handle_system_exception (TAO_InputCDR &cdr + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + Invocation_Status wait_for_reply (ACE_Time_Value *max_wait_time, + TAO_Synch_Reply_Dispatcher &rd, + TAO_Bind_Dispatcher_Guard &bd + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + + private: + + Invocation_Status check_reply_status (TAO_Synch_Reply_Dispatcher &rd + ACE_ENV_ARG_DECL); + + + }; + + class TAO_Export Synch_Oneway_Invocation : public Synch_Twoway_Invocation + { + public: + Synch_Oneway_Invocation (CORBA::Object_ptr otarget, + Profile_Transport_Resolver &resolver, + TAO_Operation_Details &detail); + + Invocation_Status remote_oneway (ACE_Time_Value *max_wait_time + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::Exception)); + }; + + class TAO_Export Reply_Guard + { + public: + Reply_Guard (Invocation_Base *s, + Invocation_Status is); + + ~Reply_Guard (void); + + void set_status (Invocation_Status s); + + private: + Invocation_Base *invocation_; + Invocation_Status status_; + + }; + +} + + +#if defined (__ACE_INLINE__) +# include "tao/Synch_Invocation.inl" +#endif /* __ACE_INLINE__ */ + +#include /**/ "ace/post.h" +#endif /*TAO_SYNCH_INVOCATION_H*/ |