/usr/include/tao/PI_Server/ServerRequestInfo.h is in libtao-dev 6.0.1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 | // -*- C++ -*-
//=============================================================================
/**
* @file ServerRequestInfo.h
*
* $Id: ServerRequestInfo.h 81663 2008-05-09 12:43:47Z johnnyw $
*
* This is the implementation of the
* @c PortableInterceptor::ServerRequestInfo interface.
*
* @author Kirthika Parameswaran <kirthika@cs.wustl.edu>
* @author Ossama Othman
*/
//=============================================================================
#ifndef TAO_SERVER_REQUEST_INFO_H
#define TAO_SERVER_REQUEST_INFO_H
#include /**/ "ace/pre.h"
#include "tao/orbconf.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#if (TAO_HAS_INTERCEPTORS == 1)
#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
#include "tao/PI_Server/PI_Server_includeC.h"
#include "tao/PI/PI.h"
#include "tao/LocalObject.h"
#include "tao/OctetSeqC.h"
#include "tao/TAO_Server_Request.h"
#include "tao/PortableInterceptorC.h"
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#endif /* _MSC_VER */
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
class TAO_ServerRequest;
class TAO_Service_Context;
namespace TAO
{
namespace Portable_Server
{
class Servant_Upcall;
}
}
namespace TAO
{
/**
* @class ServerRequestInfo
*
* @brief Implementation of the
* @c PortableInterceptor::ServerRequestInfo IDL interface.
*
* Implementation of the @c PortableInterceptor::ServerRequestInfo
* IDL interface.
*
* @note This class is currently not meant to be reference counted
* since it is instantiated on the stack.
*/
class ServerRequestInfo
: public virtual PortableInterceptor::ServerRequestInfo
, public virtual ::CORBA::LocalObject
{
public:
/// Constructor.
ServerRequestInfo (TAO_ServerRequest & server_request,
TAO::Argument * const * args,
size_t nargs,
void * servant_upcall,
CORBA::TypeCode_ptr const * exceptions,
CORBA::ULong nexceptions);
/// Return an ID unique to the current request. This request ID may
/// or may not be the same as the GIOP request ID.
virtual CORBA::ULong request_id (void);
/// Return the operation name for the current request.
virtual char * operation (void);
/// Return the list of arguments passed to the current operation.
virtual Dynamic::ParameterList * arguments (void);
/// Return the list of exceptions the current operation is capable
/// of throwing.
virtual Dynamic::ExceptionList * exceptions (void);
virtual Dynamic::ContextList * contexts (void);
virtual Dynamic::RequestContext * operation_context (void);
/// Return the result of the current request. If there is no
/// return value then an @c Any with @c tk_void @c TypeCode is
/// returned. This method is not valid for oneway operations.
virtual CORBA::Any * result (void);
/// Returns @c true for a two-way operation, and @c false otherwise.
virtual CORBA::Boolean response_expected (void);
/// Return the @c sync_scope policy value for the current one-way
/// operation. If the operation is not a one-way, a
/// @c CORBA::BAD_INV_ORDER exception is thrown.
virtual Messaging::SyncScope sync_scope (void);
/// Return the reply status for the current request.
/**
* Statuses can be @c PortableInterceptor::SUCCESSFUL,
* @c SYSTEM_EXCEPTION, @c USER_EXCEPTION, @c LOCATION_FORWARD,
* @c TRANSPORT_RETRY, @c UNKNOWN..
*/
virtual PortableInterceptor::ReplyStatus reply_status (void);
/// If the reply status is
/// @c PortableInterceptor::LOCATION_FORWARD return the
/// object reference to which the request was forwarded.
virtual CORBA::Object_ptr forward_reference (void);
/// Retrieve data from the "request scope" @c PICurrent object.
virtual CORBA::Any * get_slot (PortableInterceptor::SlotId id);
/// Return the @c IOP::ServiceContext with the given
/// @c IOP::ServiceId from the request service context list.
virtual IOP::ServiceContext * get_request_service_context (
IOP::ServiceId id);
/// Return the @c IOP::ServiceContext with the given
/// @c IOP::ServiceId from the reply service context list.
virtual IOP::ServiceContext * get_reply_service_context (
IOP::ServiceId id);
/// Return an @c Any containing the exception being sent, if any.
/// Otherwise, throw a @c CORBA::BAD_INV_ORDER exception.
/**
* @note There is no trivial way to extract the exception from an
* @c Any.
*/
virtual CORBA::Any * sending_exception (void);
/// Return the @c ObjectId for the target object.
virtual PortableInterceptor::ObjectId * object_id (void);
/// Return the @c AdapterId for the POA handling the current
/// request.
virtual CORBA::OctetSeq * adapter_id (void);
/// Return the server_id of the server. The value is passed to
/// the ORB via @c -ORBServerId parameter.
virtual char * server_id (void);
/// Return the ORBId value that is passed to the @c ORB_init
/// call.
virtual char * orb_id (void);
/// Return the name of the object adapter that services requests
/// for the invoked object.
virtual PortableInterceptor::AdapterName * adapter_name (void);
/// Return the most derived interface of the target object.
virtual char * target_most_derived_interface (void);
/// Return the policy of the given type in effect for the current
/// request.
virtual CORBA::Policy_ptr get_server_policy (CORBA::PolicyType type);
/// Insert data into the "request scope" @c PICurrent object.
virtual void set_slot (PortableInterceptor::SlotId id,
const CORBA::Any & data);
/// Returns true if the target's type corresponds to the given
/// @c RepositoryId.
virtual CORBA::Boolean target_is_a (const char * id);
/// Add the @c IOP::ServiceContext to the reply (outgoing)
/// @c IOP::ServiceContextList.
virtual void add_reply_service_context (
const IOP::ServiceContext & service_context,
CORBA::Boolean replace
);
public:
/**
* @name Helper methods specific to TAO.
*/
//@{
/// Extract the forward object reference from the
/// @c PortableInterceptor::ForwardRequest exception, and set the
/// reply status flag accordingly.
void forward_reference (PortableInterceptor::ForwardRequest &exc);
/// Set the forward reference associated with the current
/// LOCATION_FORWARD reply.
/**
* @note This method is only invoked when a
* @c PortableServer::ForwardRequest exception is thrown by a
* servant manager.
*/
void forward_reference (CORBA::Object_ptr obj);
//@}
/// Return a reference to the underlying @c TAO_ServerRequest
/// object.
TAO_ServerRequest &server_request (void);
protected:
/// Helper method to get the request and response service
/// contexts.
IOP::ServiceContext * get_service_context_i (
TAO_Service_Context & service_context_list,
IOP::ServiceId id);
protected:
/// Underlying request object that contains much of the
/// information encapsulated by this @c ServerRequestInfo
/// implementation.
TAO_ServerRequest & server_request_;
/// Operation argument list.
TAO::Argument * const * const args_;
/// Number of element in the operation argument list.
size_t const nargs_;
/// Pointer to the @c Servant_Upcall object that contains the
/// object ID, among other things.
TAO::Portable_Server::Servant_Upcall * const servant_upcall_;
/// Array of @c TypeCodes for user exceptions the operation is
/// capable of raising.
CORBA::TypeCode_ptr const * const exceptions_;
/// The number of elements in the @c exceptions_ array.
CORBA::ULong const nexceptions_;
};
} // End namespace TAO
TAO_END_VERSIONED_NAMESPACE_DECL
# if defined (__ACE_INLINE__)
# include "tao/PI_Server/ServerRequestInfo.inl"
# endif /* __ACE_INLINE__ */
#if defined(_MSC_VER)
#pragma warning(pop)
#endif /* _MSC_VER */
#endif /* TAO_HAS_INTERCEPTORS == 1 */
#include /**/ "ace/post.h"
#endif /* TAO_SERVER_REQUEST_INFO_H */
|