summaryrefslogtreecommitdiff
path: root/TAO/tao/Asynch_Invocation.h
diff options
context:
space:
mode:
authoralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-09 04:20:11 +0000
committeralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-09 04:20:11 +0000
commit4f4643058cb149912bd2bf508ebac0b22144fbca (patch)
tree25ecaede242dbdd06ebcaa464d9e5be6d4ec37a2 /TAO/tao/Asynch_Invocation.h
parent37cf7fd7f77f26a1f471af0aec93aa55f7a57312 (diff)
downloadATCD-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.h93
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 */