blob: d61acbef6211978866b78ec896e574d90e4a94c2 (
plain)
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
114
115
116
117
118
119
120
121
|
// -*- C++ -*-
//=============================================================================
/**
* @file Pluggable_Messaging_Utils.h
*
* Utility classes for the TAO pluggable messaging framework.
*
* @author Balachandran Natarajan <bala@cs.wustl.edu>
*/
//=============================================================================
#ifndef TAO_PLUGGABLE_MESSAGING_UTILS_H
#define TAO_PLUGGABLE_MESSAGING_UTILS_H
#include /**/ "ace/pre.h"
#include "tao/GIOPC.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
class TAO_Transport;
/**
* @class TAO_Pluggable_Reply_Params_Base
*
* @brief TAO_Pluggable_Reply_Params_Base
*
* This represents a set of data that would be assembled by the
* acceptor to pass to the connector. This base class is used by
* TAO_ServerRequest. The child class TAO_Pluggable_Reply_Params
* is used on the client side, and contains an additional
* TAO_InputCDR member, not needed on the server side.
*/
class TAO_Export TAO_Pluggable_Reply_Params_Base
{
public:
/// Constructor.
TAO_Pluggable_Reply_Params_Base (void);
/// The IOP service context list.
IOP::ServiceContextList svc_ctx_;
/// The request id for which the reply we (connector) has received.
CORBA::ULong request_id_;
/**
* Since this class no longer contains an NVList, this is the
* way to determine if the request was DSI, so we can use Carlos'
* service context list no-deep-copy optimization.
*/
CORBA::Boolean is_dsi_;
/// Info required for DSI optimization that pads the outgoing
/// CDR stream according to the alignment of the NVList.
ptrdiff_t dsi_nvlist_align_;
/**
* Get and Set methods for the service context list that we dont
* own. This is useful for cases where the application objects own
* a service context list and would like to pass on their contents
* without a copy.
*/
IOP::ServiceContextList &service_context_notowned (void);
void service_context_notowned (IOP::ServiceContextList *svc);
/// A flag that indicates if there is any data is going to get
/// marshalled in the reply
CORBA::Boolean argument_flag_;
GIOP::ReplyStatusType reply_status (void) const;
void reply_status (GIOP::ReplyStatusType status);
GIOP::LocateStatusType locate_reply_status (void) const;
void locate_reply_status (GIOP::LocateStatusType status);
protected:
/// The service context list that we don't own.
IOP::ServiceContextList *service_context_;
private:
/// The reply status.
GIOP::ReplyStatusType reply_status_;
/// The locate reply status
GIOP::LocateStatusType locate_reply_status_;
};
/**
* @class TAO_Pluggable_Reply_Params
*
* @brief TAO_Pluggable_Connector_Params
*
*/
class TAO_Export TAO_Pluggable_Reply_Params
: public TAO_Pluggable_Reply_Params_Base
{
public:
/// Constructor.
TAO_Pluggable_Reply_Params (TAO_Transport *t);
/// The stream with the non-demarshaled reply. This stream will be
/// passed up to the stubs to demarshal the parameter values.
TAO_InputCDR *input_cdr_;
TAO_Transport *transport_;
};
TAO_END_VERSIONED_NAMESPACE_DECL
#if defined (__ACE_INLINE__)
#include "tao/Pluggable_Messaging_Utils.inl"
#endif /* __ACE_INLINE__ */
#include /**/ "ace/post.h"
#endif /* TAO_PLUGGABLE_MESSAGING_UTILS_H */
|