Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

Asynch_Invocation.h

Go to the documentation of this file.
00001 // This may look like C, but it's really -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file   Asynch_Invocation.h
00006  *
00007  *  $Id: Asynch_Invocation.h,v 1.1.1.4 2003/02/21 18:36:44 chad Exp $
00008  *
00009  *  Encapsulate the logic for remote Asynchronous Invocations.
00010  *
00011  *  @author Carlos O'Ryan <coryan@uci.edu>
00012  *  @author Alexander Babu Arulanthu <alex@cs.wustl.edu>
00013  *  @author Jeff Parsons <parsons@cs.wustl.edu>
00014  */
00015 //=============================================================================
00016 
00017 
00018 #ifndef TAO_ASYNCH_INVOCATION_H
00019 #define TAO_ASYNCH_INVOCATION_H
00020 #include "ace/pre.h"
00021 
00022 #include "tao/Invocation.h"
00023 
00024 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 #  pragma once
00026 #endif /* ACE_LACKS_PRAGMA_ONCE */
00027 
00028 #include "tao/Asynch_Reply_Dispatcher_Base.h"
00029 
00030 /**
00031  * @class TAO_GIOP_Asynch_Invocation
00032  *
00033  * @brief Base class for TAO_GIOP_Twoway_Asynch_Invocation and
00034  *  TAO_GIOP_DII_Deferred_Invocation.
00035  */
00036 class TAO_Export TAO_GIOP_Asynch_Invocation
00037   : public TAO_GIOP_Invocation
00038 {
00039 public:
00040 
00041   /// Default constructor. This should never get called, it is here
00042   /// only to appease older versions of g++.
00043   TAO_GIOP_Asynch_Invocation (void);
00044 
00045   /// Constructor.
00046   TAO_GIOP_Asynch_Invocation (TAO_Stub *stub,
00047                               const char *operation,
00048                               CORBA::ULong opname_len,
00049                               CORBA::Boolean argument_flag,
00050                               TAO_ORB_Core *orb_core,
00051                               int byte_order = TAO_ENCAP_BYTE_ORDER);
00052 
00053   /// Send request, without blocking until any reply comes back.
00054   virtual int invoke (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00055     ACE_THROW_SPEC ((CORBA::SystemException));
00056 
00057   /// Establishes a connection to the remote server, initializes
00058   /// headers etc.
00059   void start (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00060     ACE_THROW_SPEC ((CORBA::SystemException));
00061 
00062 protected:
00063 
00064   /// Must be overridden.
00065   virtual int invoke_i (ACE_ENV_SINGLE_ARG_DECL)
00066     ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
00067 
00068   /// Reply dispatcher for the current asynchronous invocation.
00069   TAO_Asynch_Reply_Dispatcher_Base *rd_;
00070 };
00071 
00072 #if defined (__ACE_INLINE__)
00073 #  include "tao/Asynch_Invocation.i"
00074 #endif /* __ACE_INLINE__ */
00075 
00076 #include "ace/post.h"
00077 #endif /* TAO_ASYNCH_INVOCATION_H */

Generated on Mon Jun 16 13:48:01 2003 for TAO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002