Revert "Minor modernization of DynamicAny code"
[ACE_TAO.git] / TAO / tao / Strategies / SCIOP_Transport.h
blob575d85e9476f5c765679298f869dbb551b2e9a35
1 // -*- C++ -*-
3 // ===================================================================
4 /**
5 * @file SCIOP_Transport.h
7 * @author Jason Cohen, Lockheed Martin ATL <jcohen@atl.lmco.com>
8 * @author Keith O'Hara, Lockheed Martin ATL
9 */
10 // ===================================================================
12 #ifndef TAO_SCIOP_TRANSPORT_H
13 #define TAO_SCIOP_TRANSPORT_H
14 #include /**/ "ace/pre.h"
16 #include "tao/orbconf.h"
18 #if !defined (ACE_LACKS_PRAGMA_ONCE)
19 # pragma once
20 #endif /* ACE_LACKS_PRAGMA_ONCE */
22 #if TAO_HAS_SCIOP == 1
24 #include "tao/Strategies/strategies_export.h"
25 #include "tao/Transport.h"
26 #include "tao/IIOPC.h"
27 #include "ace/SOCK_SEQPACK_Association.h"
29 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
31 // Forward decls.
32 class TAO_SCIOP_Connection_Handler;
33 class TAO_ORB_Core;
34 class TAO_Operation_Details;
35 class TAO_Acceptor;
37 /**
38 * @class TAO_SCIOP_Transport
40 * @brief Specialization of the base TAO_Transport class to handle the
41 * SCIOP protocol.
43 * Specialization of the base TAO_Transport class to handle the SCIOP
44 * protocol.
46 class TAO_Strategies_Export TAO_SCIOP_Transport : public TAO_Transport
48 public:
49 /// Constructor.
50 TAO_SCIOP_Transport (TAO_SCIOP_Connection_Handler *handler,
51 TAO_ORB_Core *orb_core);
53 protected:
54 /// Destructor
55 /**
56 * Protected destructor to enforce proper memory management through
57 * the reference counting mechanism.
59 virtual ~TAO_SCIOP_Transport ();
61 /** @name Overridden Template Methods
63 * Please check the documentation in "tao/Transport.h" for more
64 * details.
66 //@{
67 virtual ACE_Event_Handler * event_handler_i ();
69 virtual ssize_t send (iovec *iov, int iovcnt,
70 size_t &bytes_transferred,
71 const ACE_Time_Value *timeout = 0);
73 virtual ssize_t recv (char *buf,
74 size_t len,
75 const ACE_Time_Value *s = 0);
78 public:
79 /// @todo These methods IMHO should have more meaningful
80 /// names. The names seem to indicate nothing.
81 virtual int send_request (TAO_Stub *stub,
82 TAO_ORB_Core *orb_core,
83 TAO_OutputCDR &association,
84 TAO_Message_Semantics message_semantics,
85 ACE_Time_Value *max_wait_time);
87 virtual int send_message (TAO_OutputCDR &association,
88 TAO_Stub *stub = 0,
89 TAO_ServerRequest *request = 0,
90 TAO_Message_Semantics message_semantics = TAO_Message_Semantics (),
91 ACE_Time_Value *max_time_wait = 0);
93 /*virtual int send_reply (TAO_OutputCDR &stream,
94 TAO_Adapter *poa = 0);*/
96 virtual int tear_listen_point_list (TAO_InputCDR &cdr);
98 virtual TAO_Connection_Handler * connection_handler_i ();
100 //@}
102 private:
103 /// Set the Bidirectional context info in the service context list
104 void set_bidir_context_info (TAO_Operation_Details &opdetails);
106 /// Add the listen points in <acceptor> to the <listen_point_list>
107 /// if this connection is in the same interface as that of the
108 /// endpoints in the <acceptor>
109 int get_listen_point (IIOP::ListenPointList &listen_point_list,
110 TAO_Acceptor *acceptor);
111 private:
112 /// The connection service handler used for accessing lower layer
113 /// communication protocols.
114 TAO_SCIOP_Connection_Handler *connection_handler_;
117 TAO_END_VERSIONED_NAMESPACE_DECL
119 #endif /* TAO_HAS_SCIOP == 1 */
121 #include /**/ "ace/post.h"
123 #endif /* TAO_SCIOP_TRANSPORT_H */