1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
// This may look like C, but it's really -*- C++ -*-
// $Id$
// ============================================================================
//
// = LIBRARY
// TAO
//
// = FILENAME
// IIOP_Transport.h
//
// = DESCRIPTION
// IIOP Transport specific processing
//
// = AUTHOR
// Fred Kuhns
//
// ============================================================================
#ifndef TAO_IIOP_TRANSPORT_H
#define TAO_IIOP_TRANSPORT_H
#include "tao/Pluggable.h"
class TAO_IIOP_Handler_Base;
class TAO_Client_Connection_Handler;
class TAO_Server_Connection_Handler;
class TAO_ORB_Core;
class TAO_IIOP_Transport : public TAO_Transport
{
public:
TAO_IIOP_Transport (TAO_IIOP_Handler_Base* handler);
~TAO_IIOP_Transport ();
CORBA::ULong tag (void);
void close_conn (void);
void resume_conn (ACE_Reactor *reactor);
int idle (void);
TAO_IIOP_Handler_Base*& handler (void);
virtual int is_nil (TAO_Transport *obj);
virtual TAO_Transport *_nil (void);
ACE_HANDLE handle(void);
virtual ssize_t send (const ACE_Message_Block *mblk);
virtual ssize_t send (const u_char *buf, size_t len);
virtual ssize_t send (const iovec *iov, int iovcnt);
virtual ssize_t receive (char *buf, size_t len);
virtual ssize_t receive (char *buf, size_t len, int flags);
virtual ssize_t receive (iovec *iov, int iovcnt);
int send_request (TAO_ORB_Core * /* orb_core */,
TAO_OutputCDR & /* stream */,
int /* twoway */) { return -1; }
protected:
TAO_IIOP_Handler_Base *handler_;
// the connection service handler used for accessing
// lower layer communication protocols.
CORBA::ULong tag_;
// IIOP tag.
ssize_t do_sendv (const iovec *iov, int iovcnt, int total_bytes);
};
class TAO_IIOP_Client_Transport : public TAO_IIOP_Transport
{
public:
TAO_IIOP_Client_Transport (TAO_Client_Connection_Handler *handler);
// constructor. Note, TAO_IIOP_Handler_Base is the base
// class for both TAO_Client_Connection_Handler and
// TAO_Server_Connection_Handler.
~TAO_IIOP_Client_Transport();
// destructor
TAO_Client_Connection_Handler* client_handler (void);
int send_request (TAO_ORB_Core *orb_core,
TAO_OutputCDR &stream,
int twoway);
private:
TAO_Client_Connection_Handler *client_handler_;
};
class TAO_IIOP_Server_Transport : public TAO_IIOP_Transport
{
public:
TAO_IIOP_Server_Transport (TAO_Server_Connection_Handler *handler);
~TAO_IIOP_Server_Transport ();
// destructor
TAO_Server_Connection_Handler* server_handler (void);
// virtual int send_response (TAO_OutputCDR &response);
private:
TAO_Server_Connection_Handler *server_handler_;
};
#endif /* TAO_IIOP_TRANSPORT_H */
|