00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef TAO_UIPMC_TRANSPORT_H
00014 #define TAO_UIPMC_TRANSPORT_H
00015 #include "ace/pre.h"
00016
00017 #include "orbsvcs/PortableGroup/portablegroup_export.h"
00018
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif
00022
00023 #include "tao/Transport.h"
00024
00025 #include "ace/SOCK_Stream.h"
00026 #include "ace/Svc_Handler.h"
00027
00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00029
00030
00031 class TAO_ORB_Core;
00032 class TAO_Operation_Details;
00033 class TAO_Acceptor;
00034
00035
00036
00037
00038
00039
00040
00041 template<typename CONNECTION_HANDLER>
00042 class TAO_PortableGroup_Export TAO_UIPMC_Transport : public TAO_Transport
00043 {
00044 public:
00045
00046
00047 TAO_UIPMC_Transport (CONNECTION_HANDLER *handler,
00048 TAO_ORB_Core *orb_core);
00049
00050
00051 ~TAO_UIPMC_Transport (void);
00052
00053
00054 virtual int handle_input (TAO_Resume_Handle &rh,
00055 ACE_Time_Value *max_wait_time = 0);
00056 protected:
00057
00058
00059
00060
00061
00062
00063 virtual ACE_Event_Handler * event_handler_i (void);
00064 virtual TAO_Connection_Handler *connection_handler_i (void);
00065
00066
00067 virtual ssize_t send (iovec *iov, int iovcnt,
00068 size_t &bytes_transferred,
00069 const ACE_Time_Value *max_wait_time);
00070
00071
00072
00073 virtual ssize_t recv (char *buf,
00074 size_t len,
00075 const ACE_Time_Value *s = 0);
00076
00077 virtual int register_handler (void);
00078
00079 public:
00080
00081
00082 virtual int send_request (TAO_Stub *stub,
00083 TAO_ORB_Core *orb_core,
00084 TAO_OutputCDR &stream,
00085 TAO_Message_Semantics message_semantics,
00086 ACE_Time_Value *max_wait_time);
00087
00088 virtual int send_message (TAO_OutputCDR &stream,
00089 TAO_Stub *stub = 0,
00090 TAO_Message_Semantics message_semantics = TAO_Transport::TAO_TWOWAY_REQUEST,
00091 ACE_Time_Value *max_time_wait = 0);
00092
00093
00094 private:
00095
00096 void write_unique_id (TAO_OutputCDR &miop_hdr, unsigned long unique);
00097
00098 private:
00099
00100
00101
00102 CONNECTION_HANDLER *connection_handler_;
00103 };
00104
00105 TAO_END_VERSIONED_NAMESPACE_DECL
00106
00107 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00108 #include "orbsvcs/PortableGroup/UIPMC_Transport.cpp"
00109 #endif
00110
00111 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00112 #pragma implementation ("orbsvcs/PortableGroup/UIPMC_Transport.cpp")
00113 #endif
00114
00115 #include "ace/post.h"
00116 #endif