3 //=============================================================================
5 * @file Upcall_Wrapper.h
7 * @author Ossama Othman
9 * @author Carlos O'Ryan
11 //=============================================================================
13 #ifndef TAO_UPCALL_WRAPPER_H
14 #define TAO_UPCALL_WRAPPER_H
16 #include /**/ "ace/pre.h"
18 #include "tao/PortableServer/portableserver_export.h"
20 #if !defined (ACE_LACKS_PRAGMA_ONCE)
22 #endif /* !ACE_LACKS_PRAGMA_ONCE */
24 #include "tao/Basic_Types.h"
25 #include "tao/orbconf.h"
27 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
29 class TAO_ServantBase
;
30 class TAO_ServerRequest
;
34 namespace PortableServer
36 typedef ::TAO_ServantBase ServantBase
;
44 namespace Portable_Server
50 * @class Upcall_Wrapper
52 * @brief Wraps the activities of the _skel operations.
55 class TAO_PortableServer_Export Upcall_Wrapper
59 * @note The TAO::Argument corresponding to the return value is
60 * always the first element in the array, regardless of
61 * whether or not the return type is void.
64 /// Perform the upcall.
66 * @param server_request Object containing server side messaging
67 * operations (e.g. CDR reply construction, etc).
68 * @param args Operation argument list.
69 * @param nargs Number of arguments in the operation
71 * @param command @c Command object that performs the
72 * actual upcall into the servant.
73 * @param servant_upcall Object containing information for POA
74 * that dispatched the servant.
75 * @param exceptions Array of user exceptions the operation
77 * @param nexceptions The number of exceptions in the operation
78 * user exception array.
80 void upcall (TAO_ServerRequest
& server_request
,
81 TAO::Argument
* const args
[],
83 TAO::Upcall_Command
& command
84 #if TAO_HAS_INTERCEPTORS == 1
85 , TAO::Portable_Server::Servant_Upcall
*servant_upcall
86 , CORBA::TypeCode_ptr
const * exceptions
87 , CORBA::ULong nexceptions
88 #endif /* TAO_HAS_INTERCEPTORS == 1 */
92 /// Perform pre-upcall operations.
94 * Perform pre-upcall operations, including operation @c IN and
95 * @c INOUT argument demarshaling.
97 void pre_upcall (TAO_InputCDR
& cdr
,
98 TAO::Argument
* const * args
,
101 /// Perform post-upcall operations.
103 * Perform post-upcall operations, including operation @c INOUT
104 * and @c OUT argument marshaling.
106 void post_upcall (TAO_ServerRequest
& server_request
,
107 TAO::Argument
* const * args
,
110 } // End namespace TAO
112 TAO_END_VERSIONED_NAMESPACE_DECL
114 #include /**/ "ace/post.h"
116 #endif /* TAO_UPCALL_WRAPPER_H */