diff options
author | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-09 04:20:11 +0000 |
---|---|---|
committer | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-09 04:20:11 +0000 |
commit | 4f4643058cb149912bd2bf508ebac0b22144fbca (patch) | |
tree | 25ecaede242dbdd06ebcaa464d9e5be6d4ec37a2 /TAO/tao/Asynch_Invocation.h | |
parent | 37cf7fd7f77f26a1f471af0aec93aa55f7a57312 (diff) | |
download | ATCD-4f4643058cb149912bd2bf508ebac0b22144fbca.tar.gz |
ChangeLogTag:Thu Jul 8 23:15:06 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/Asynch_Invocation.h')
-rw-r--r-- | TAO/tao/Asynch_Invocation.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/TAO/tao/Asynch_Invocation.h b/TAO/tao/Asynch_Invocation.h new file mode 100644 index 00000000000..6ec6a1f5518 --- /dev/null +++ b/TAO/tao/Asynch_Invocation.h @@ -0,0 +1,93 @@ +// This may look like C, but it's really -*- C++ -*- +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO +// +// = FILENAME +// Asynch_Invocation.h +// +// = DESCRIPTION +// Encapsulate the logic for remote Asynchronous Invocations. +// +// = AUTHOR +// Carlos O'Ryan <coryan@cs.wustl.edu> and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#ifndef TAO_ASYNCH_INVOCATION_H +#define TAO_ASYNCH_INVOCATION_H + +#include "tao/Invocation.h" + +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) +#include "tao/MessagingC.h" + +class TAO_Export TAO_GIOP_Twoway_Asynch_Invocation : public TAO_GIOP_Invocation +{ + // = TITLE + // Sends a two-way request does not expect the reply. + // + // = DESCRIPTION + // This class connects (or lookups a connection from the cache) to + // the remote server, builds the CDR stream for the Request, send + // the CDR stream and returns. + // +public: + TAO_GIOP_Twoway_Asynch_Invocation (TAO_Stub *data, + const char *operation, + TAO_ORB_Core* orb_core, + const TAO_Reply_Handler_Skeleton &reply_handler_skel, + Messaging::ReplyHandler_ptr reply_handler_ptr); + // Constructor. + + void start (CORBA_Environment &TAO_IN_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::SystemException)); + // Calls TAO_GIOP_Asynch_Invocation::start. + + int invoke (CORBA::ExceptionList &exceptions, + CORBA_Environment &TAO_IN_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException)); + // Send request, block until any reply comes back, and unmarshal + // reply parameters as appropriate. + + int invoke (TAO_Exception_Data *excepts, + CORBA::ULong except_count, + CORBA_Environment &TAO_IN_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::Exception)); + // Special purpose invoke method used by the interpretive stubs. This + // accomplishes the same task as the normal invoke except that + // Exceptions are allocated and decoded here. This reduces the + // footprint of the generated stubs. + + // TAO_InputCDR &inp_stream (void); + // // Return the underlying input stream. + // + // void get_value (CORBA::TypeCode_ptr tc, + // void *value, + // CORBA_Environment &TAO_IN_ENV = + // TAO_default_environment ()); + // // No CORBA::Context support (deprecated). + +private: + int invoke_i (CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)); + // Implementation of the invoke() methods, handles the basic + // send/reply code and the system exceptions. + +private: + TAO_Asynch_Reply_Dispatcher *rd_; + // Reply dispatcher for the current synchronous Asynch_Invocation. +}; + +#if defined (__ACE_INLINE__) +# include "tao/Asynch_Invocation.i" +#endif /* __ACE_INLINE__ */ +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ +#endif /* TAO_ASYNCH_INVOCATION_H */ |