Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TAO_MESSAGING_ASYNCH_INVOCATION_ADAPTER_H
00015 #define TAO_MESSAGING_ASYNCH_INVOCATION_ADAPTER_H
00016
00017 #include "ace/pre.h"
00018
00019 #include "tao/Messaging/messaging_export.h"
00020
00021 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00022 # pragma once
00023 #endif
00024
00025 #include "tao/Messaging/Messaging.h"
00026 #include "tao/Asynch_Reply_Dispatcher_Base.h"
00027 #include "tao/Invocation_Adapter.h"
00028 #include "ace/Global_Macros.h"
00029 #include "ace/Auto_Functor.h"
00030
00031 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00032 class ACE_Time_Value;
00033 ACE_END_VERSIONED_NAMESPACE_DECL
00034
00035 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00036
00037 class TAO_Operation_Details;
00038 class TAO_Stub;
00039 class TAO_Asynch_Reply_Dispatcher;
00040 class TAO_Asynch_Reply_Dispatcher_Base;
00041
00042 namespace CORBA
00043 {
00044 class Object;
00045 }
00046
00047 namespace TAO
00048 {
00049 class Argument;
00050
00051 class Collocation_Proxy_Broker;
00052
00053
00054
00055
00056
00057
00058
00059
00060 class TAO_Messaging_Export Asynch_Invocation_Adapter
00061 : public Invocation_Adapter
00062 {
00063 public:
00064 Asynch_Invocation_Adapter (
00065 CORBA::Object *target,
00066 Argument **args,
00067 int arg_number,
00068 const char *operation,
00069 size_t op_len,
00070 Collocation_Proxy_Broker *b,
00071 TAO::Invocation_Mode mode = TAO_ASYNCHRONOUS_CALLBACK_INVOCATION);
00072
00073 void invoke (Messaging::ReplyHandler_ptr reply_handler_ptr,
00074 const TAO_Reply_Handler_Stub &reply_handler_stub);
00075
00076 virtual void invoke (TAO::Exception_Data *ex, unsigned long ex_count);
00077 protected:
00078
00079 virtual Invocation_Status invoke_twoway (
00080 TAO_Operation_Details &op,
00081 CORBA::Object_var &effective_target,
00082 Profile_Transport_Resolver &r,
00083 ACE_Time_Value *&max_wait_time);
00084
00085 virtual Invocation_Status invoke_collocated_i (
00086 TAO_Stub *stub,
00087 TAO_Operation_Details &details,
00088 CORBA::Object_var &effective_target,
00089 Collocation_Strategy strat);
00090
00091 private:
00092
00093 ACE_Utils::Auto_Functor<TAO_Asynch_Reply_Dispatcher_Base,
00094 ARDB_Refcount_Functor> safe_rd_;
00095
00096 private:
00097
00098 Asynch_Invocation_Adapter (void);
00099
00100 Asynch_Invocation_Adapter (const Asynch_Invocation_Adapter &);
00101 Asynch_Invocation_Adapter & operator= (const Asynch_Invocation_Adapter &);
00102
00103 };
00104 }
00105
00106 TAO_END_VERSIONED_NAMESPACE_DECL
00107
00108 #include "ace/post.h"
00109
00110 #endif