00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef TAO_SSLIOP_TRANSPORT_H
00018 #define TAO_SSLIOP_TRANSPORT_H
00019
00020 #include "ace/pre.h"
00021
00022 #include "orbsvcs/SSLIOP/SSLIOP_Export.h"
00023
00024 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 #endif
00027
00028 #include "tao/Transport.h"
00029 #include "tao/operation_details.h"
00030 #include "tao/GIOP_Message_Version.h"
00031 #include "tao/Pluggable_Messaging_Utils.h"
00032 #include "tao/IIOPC.h"
00033
00034 #include "ace/SSL/SSL_SOCK_Stream.h"
00035
00036 #include "ace/Svc_Handler.h"
00037
00038
00039 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00040
00041
00042 class TAO_ORB_Core;
00043 class TAO_Pluggable_Messaging;
00044 class TAO_Acceptor;
00045
00046 namespace TAO
00047 {
00048 namespace SSLIOP
00049 {
00050 typedef ACE_Svc_Handler<ACE_SSL_SOCK_STREAM, ACE_NULL_SYNCH> SVC_HANDLER;
00051
00052 class Handler_Base;
00053 class Connection_Handler;
00054
00055
00056
00057
00058
00059
00060
00061
00062 class TAO_SSLIOP_Export Transport : public TAO_Transport
00063 {
00064 public:
00065
00066
00067 Transport (Connection_Handler *handler,
00068 TAO_ORB_Core *orb_core);
00069
00070
00071 ~Transport (void);
00072
00073
00074
00075
00076
00077 virtual int handle_input (TAO_Resume_Handle &rh,
00078 ACE_Time_Value *max_wait_time = 0);
00079
00080 protected:
00081
00082
00083
00084
00085
00086
00087 virtual ACE_Event_Handler * event_handler_i (void);
00088 virtual TAO_Connection_Handler *connection_handler_i (void);
00089
00090 virtual TAO_Pluggable_Messaging *messaging_object (void);
00091
00092
00093 virtual ssize_t send (iovec *iov, int iovcnt,
00094 size_t &bytes_transferred,
00095 const ACE_Time_Value *timeout = 0);
00096
00097
00098 virtual ssize_t recv (char *buf,
00099 size_t len,
00100 const ACE_Time_Value *s = 0);
00101
00102 public:
00103
00104
00105 virtual int send_request (TAO_Stub *stub,
00106 TAO_ORB_Core *orb_core,
00107 TAO_OutputCDR &stream,
00108 int message_semantics,
00109 ACE_Time_Value *max_wait_time);
00110
00111 virtual int send_message (TAO_OutputCDR &stream,
00112 TAO_Stub *stub = 0,
00113 int message_semantics =
00114 TAO_Transport::TAO_TWOWAY_REQUEST,
00115 ACE_Time_Value *max_time_wait = 0);
00116
00117 virtual int generate_request_header (TAO_Operation_Details &opdetails,
00118 TAO_Target_Specification &spec,
00119 TAO_OutputCDR &msg);
00120
00121
00122 virtual int messaging_init (CORBA::Octet major,
00123 CORBA::Octet minor);
00124
00125
00126 virtual int tear_listen_point_list (TAO_InputCDR &cdr);
00127
00128
00129 private:
00130
00131
00132
00133 void set_bidir_context_info (TAO_Operation_Details &opdetails);
00134
00135
00136
00137
00138 int get_listen_point (IIOP::ListenPointList &listen_point_list,
00139 TAO_Acceptor *acceptor);
00140
00141 private:
00142
00143
00144
00145 Connection_Handler *connection_handler_;
00146
00147
00148 TAO_Pluggable_Messaging *messaging_object_;
00149 };
00150
00151 }
00152 }
00153
00154 TAO_END_VERSIONED_NAMESPACE_DECL
00155
00156 #include "ace/post.h"
00157 #endif