From 3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c Mon Sep 17 00:00:00 2001 From: "William R. Otte" Date: Mon, 24 Jul 2006 15:50:21 +0000 Subject: Repo restructuring --- TAO/tao/IIOP_Transport.h | 166 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 TAO/tao/IIOP_Transport.h (limited to 'TAO/tao/IIOP_Transport.h') diff --git a/TAO/tao/IIOP_Transport.h b/TAO/tao/IIOP_Transport.h new file mode 100644 index 00000000000..70c99088a0a --- /dev/null +++ b/TAO/tao/IIOP_Transport.h @@ -0,0 +1,166 @@ +// -*- C++ -*- + +// =================================================================== +/** + * @file IIOP_Transport.h + * + * $Id$ + * + * @author Originally by Fred Kuhns + * @author Modified by Balachandran Natarajan + */ +// =================================================================== + +#ifndef TAO_IIOP_TRANSPORT_H +#define TAO_IIOP_TRANSPORT_H + +#include /**/ "ace/pre.h" + +#include "tao/orbconf.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if defined (TAO_HAS_IIOP) && (TAO_HAS_IIOP != 0) + +#include "tao/Transport.h" + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +namespace IIOP +{ + class ListenPointList; +} + +// Forward decls. +class TAO_IIOP_Connection_Handler; +class TAO_ORB_Core; +class TAO_Operation_Details; +class TAO_Pluggable_Messaging; +class TAO_Acceptor; +class TAO_Adapter; + +/** + * @class TAO_IIOP_Transport + * + * @brief Specialization of the base TAO_Transport class to handle the + * IIOP protocol. + * + * Specialization of the base TAO_Transport class to handle the IIOP + * protocol. + */ +class TAO_Export TAO_IIOP_Transport : public TAO_Transport +{ +public: + + /// Constructor. + TAO_IIOP_Transport (TAO_IIOP_Connection_Handler *handler, + TAO_ORB_Core *orb_core, + CORBA::Boolean flag); + +protected: + + /// Destructor + /** + * Protected destructor to enforce proper memory management through + * the reference counting mechanism. + */ + virtual ~TAO_IIOP_Transport (void); + + /** @name Overridden Template Methods + * + * Please check the documentation in "tao/Transport.h" for more + * details. + */ + //@{ + + virtual ACE_Event_Handler * event_handler_i (void); + + /// Access the underlying messaging object + virtual TAO_Pluggable_Messaging *messaging_object (void); + + virtual ssize_t send (iovec *iov, int iovcnt, + size_t &bytes_transferred, + const ACE_Time_Value *timeout = 0); + +#ifdef ACE_HAS_SENDFILE + virtual ssize_t sendfile (TAO_MMAP_Allocator * allocator, + iovec * iov, + int iovcnt, + size_t &bytes_transferred, + ACE_Time_Value const * timeout = 0); +#endif /* ACE_HAS_SENDFILE */ + + + virtual ssize_t recv (char *buf, + size_t len, + const ACE_Time_Value *s = 0); + + virtual int send_message_shared (TAO_Stub *stub, + int message_semantics, + const ACE_Message_Block *message_block, + ACE_Time_Value *max_wait_time); + + +public: + + /// Bridge method to call a similar method on the connection handler + void update_protocol_properties (int send_buffer_size, + int recv_buffer_size, + int no_delay, + int enable_network_priority); + + /// @todo These methods IMHO should have more meaningful + /// names. The names seem to indicate nothing. + virtual int send_request (TAO_Stub *stub, + TAO_ORB_Core *orb_core, + TAO_OutputCDR &stream, + int message_semantics, + ACE_Time_Value *max_wait_time); + + virtual int send_message (TAO_OutputCDR &stream, + TAO_Stub *stub = 0, + int message_semantics = TAO_Transport::TAO_TWOWAY_REQUEST, + ACE_Time_Value *max_time_wait = 0); + + virtual int generate_request_header (TAO_Operation_Details &opdetails, + TAO_Target_Specification &spec, + TAO_OutputCDR &msg); + + virtual int messaging_init (CORBA::Octet major, + CORBA::Octet minor); + + virtual int tear_listen_point_list (TAO_InputCDR &cdr); + + virtual TAO_Connection_Handler * connection_handler_i (void); + + //@} + +private: + + /// Set the Bidirectional context info in the service context list + void set_bidir_context_info (TAO_Operation_Details &opdetails); + + /// Add the listen points in @a acceptor to the @a listen_point_list + /// if this connection is in the same interface as that of the + /// endpoints in the @a acceptor + int get_listen_point (IIOP::ListenPointList &listen_point_list, + TAO_Acceptor *acceptor); +private: + + /// The connection service handler used for accessing lower layer + /// communication protocols. + TAO_IIOP_Connection_Handler *connection_handler_; + + /// Our messaging object. + TAO_Pluggable_Messaging *messaging_object_; +}; + +TAO_END_VERSIONED_NAMESPACE_DECL + +#endif /* TAO_HAS_IIOP && TAO_HAS_IIOP != 0 */ + +#include /**/ "ace/post.h" + +#endif /* TAO_IIOP_TRANSPORT_H */ -- cgit v1.2.1