From 8dd7df7bc379f782c273ca6182f93cccef5ae8fa Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 9 Jul 1999 04:20:11 +0000 Subject: ChangeLogTag:Thu Jul 8 23:15:06 1999 Alexander Babu Arulanthu --- TAO/tao/Asynch_Invocation.h | 93 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 TAO/tao/Asynch_Invocation.h (limited to 'TAO/tao/Asynch_Invocation.h') 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 and Alexander Babu Arulanthu +// +// +// ============================================================================ + +#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 */ -- cgit v1.2.1