00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file CSD_TP_Corba_Request.h 00006 * 00007 * $Id: CSD_TP_Corba_Request.h 76551 2007-01-24 13:42:44Z johnnyw $ 00008 * 00009 * @author Tim Bradley <bradley_t@ociweb.com> 00010 */ 00011 //============================================================================= 00012 00013 #ifndef TAO_CSD_TP_CORBA_REQUEST_H 00014 #define TAO_CSD_TP_CORBA_REQUEST_H 00015 00016 #include /**/ "ace/pre.h" 00017 00018 #include "tao/CSD_ThreadPool/CSD_TP_Export.h" 00019 00020 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00021 # pragma once 00022 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00023 00024 #include "tao/CSD_ThreadPool/CSD_TP_Request.h" 00025 #include "tao/CSD_Framework/CSD_FW_Server_Request_Wrapper.h" 00026 #include "tao/PortableServer/PortableServer.h" 00027 #include "tao/PortableServer/Servant_Base.h" 00028 #include "ace/SString.h" 00029 00030 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00031 00032 namespace TAO 00033 { 00034 namespace CSD 00035 { 00036 00037 class TP_Corba_Request; 00038 typedef TAO_Intrusive_Ref_Count_Handle<TP_Corba_Request> 00039 TP_Corba_Request_Handle; 00040 00041 /** 00042 * @class TP_Corba_Request 00043 * 00044 * @brief Base class for "queue-able" CORBA requests. 00045 * 00046 * TBD - Add description 00047 * 00048 */ 00049 class TAO_CSD_TP_Export TP_Corba_Request : public TP_Request 00050 { 00051 public: 00052 00053 /// Virtual Destructor. 00054 virtual ~TP_Corba_Request(); 00055 00056 00057 protected: 00058 00059 /// Constructor. 00060 TP_Corba_Request(const PortableServer::ObjectId& object_id, 00061 PortableServer::POA_ptr poa, 00062 const char* operation, 00063 PortableServer::Servant servant, 00064 TP_Servant_State* servant_state, 00065 TAO_ServerRequest& server_request); 00066 00067 /// Delegate to the FW_Server_Request_Wrapper clone() method. 00068 void do_clone(); 00069 00070 /// Delegate to the FW_Server_Request_Wrapper dispatch() method. 00071 void do_dispatch(void); 00072 00073 /// Delegate to the FW_Server_Request_Wrapper cancel() method. 00074 void do_cancel(); 00075 00076 00077 private: 00078 00079 /// The ObjectId for the target servant. 00080 PortableServer::ObjectId object_id_; 00081 00082 /// The POA. 00083 PortableServer::POA_var poa_; 00084 00085 /// The name of the IDL operation. 00086 ACE_CString operation_; 00087 00088 /// The TAO_ServerRequest object wrapper. 00089 FW_Server_Request_Wrapper server_request_; 00090 }; 00091 00092 } 00093 } 00094 00095 TAO_END_VERSIONED_NAMESPACE_DECL 00096 00097 #if defined (__ACE_INLINE__) 00098 # include "tao/CSD_ThreadPool/CSD_TP_Corba_Request.inl" 00099 #endif /* __ACE_INLINE__ */ 00100 00101 #include /**/ "ace/post.h" 00102 00103 #endif /* TAO_CSD_TP_CORBA_REQUEST_H */