00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Asynch_Invocation.h 00006 * 00007 * $Id: Asynch_Invocation.h 79829 2007-10-23 12:39:52Z johnnyw $ 00008 * 00009 * @author Balachandran Natarajan <bala@dre.vanderbilt.edu> 00010 */ 00011 //============================================================================= 00012 00013 #ifndef TAO_MESSAGING_ASYNCH_INVOCATION_H 00014 #define TAO_MESSAGING_ASYNCH_INVOCATION_H 00015 #include /**/ "ace/pre.h" 00016 00017 #include "tao/Messaging/messaging_export.h" 00018 00019 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00020 # pragma once 00021 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00022 00023 #include "tao/Synch_Invocation.h" 00024 #include "tao/Asynch_Reply_Dispatcher_Base.h" 00025 #include "ace/Global_Macros.h" 00026 #include "ace/Auto_Functor.h" 00027 00028 00029 ACE_BEGIN_VERSIONED_NAMESPACE_DECL 00030 class ACE_Time_Value; 00031 ACE_END_VERSIONED_NAMESPACE_DECL 00032 00033 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00034 00035 class TAO_Operation_Details; 00036 class TAO_InputCDR; 00037 class TAO_Asynch_Reply_Dispatcher_Base; 00038 00039 namespace TAO 00040 { 00041 class Profile_Transport_Resolver; 00042 00043 class TAO_Messaging_Export Asynch_Remote_Invocation 00044 : public Synch_Twoway_Invocation 00045 { 00046 public: 00047 Asynch_Remote_Invocation (CORBA::Object_ptr otarget, 00048 Profile_Transport_Resolver &resolver, 00049 TAO_Operation_Details &detail, 00050 TAO_Asynch_Reply_Dispatcher_Base *rd, 00051 bool response_expected = true); 00052 00053 Invocation_Status remote_invocation (ACE_Time_Value *value); 00054 00055 protected: 00056 // To prevent leaking memory from the reply dispatcher that we 00057 // are given 00058 ACE_Utils::Auto_Functor <TAO_Asynch_Reply_Dispatcher_Base, 00059 ARDB_Refcount_Functor> safe_rd_; 00060 }; 00061 } 00062 00063 TAO_END_VERSIONED_NAMESPACE_DECL 00064 00065 #include /**/ "ace/post.h" 00066 #endif /*TAO_MESSAGING_ASYNCH_INVOCATION_H*/