Class ServerRequest
- Direct Known Subclasses:
ServerRequestImpl
Request
object in the DII.
The ORB is responsible for creating this embodiment of a request,
and delivering it to a Dynamic Implementation Routine (DIR).
A dynamic servant (a DIR) is created by implementing the
DynamicImplementation class,
which has a single invoke method. This method accepts a
ServerRequest object.
The abstract class ServerRequest defines
methods for accessing the
method name, the arguments and the context of the request, as
well as methods for setting the result of the request either as a
return value or an exception.
A subtlety with accessing the arguments of the request is that the
DIR needs to provide type information about the
expected arguments, since there is no compiled information about
these. This information is provided through an NVList,
which is a list of NamedValue objects.
Each NamedValue object
contains an Any object, which in turn
has a TypeCode object representing the type
of the argument.
Similarly, type information needs to be provided for the response,
for either the expected result or for an exception, so the methods
result and except take an Any
object as a parameter.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidSpecifies method parameter types and retrieves "in" and "inout" argument values.abstract Contextctx()Returns the context information specified in IDL for the operation when the operation is not an attribute access and the operation's IDL definition contains a context expression; otherwise it returns a nilContextreference.voidDeprecated.use set_exception()op_name()Deprecated.use operation()Throws anorg.omg.CORBA.NO_IMPLEMENTexception.voidDeprecated.use the methodargumentsvoidDeprecated.use the methodset_resultvoidset_exception(Any any) Throws anorg.omg.CORBA.NO_IMPLEMENTexception.voidset_result(Any any) Throws anorg.omg.CORBA.NO_IMPLEMENTexception.
-
Constructor Details
-
ServerRequest
public ServerRequest()
-
-
Method Details
-
op_name
Deprecated.use operation()Retrieves the name of the operation being invoked. According to OMG IDL's rules, these names must be unique among all operations supported by this object's "most-derived" interface. Note that the operation names for getting and setting attributes are_get_<attribute_name>and_set_<attribute_name>, respectively.- Returns:
- the name of the operation to be invoked
-
operation
Throws anorg.omg.CORBA.NO_IMPLEMENTexception.Retrieves the name of the operation being invoked. According to OMG IDL's rules, these names must be unique among all operations supported by this object's "most-derived" interface. Note that the operation names for getting and setting attributes are
_get_<attribute_name>and_set_<attribute_name>, respectively.- Returns:
- the name of the operation to be invoked
- See Also:
-
params
Deprecated.use the methodargumentsSpecifies method parameter types and retrieves "in" and "inout" argument values.Note that this method is deprecated; use the method
argumentsin its place.Unless it calls the method
set_exception, the DIR must call this method exactly once, even if the method signature contains no parameters. Once the methodargumentsorset_exceptionhas been called, callingargumentson the sameServerRequestobject will result in aBAD_INV_ORDERsystem exception. The DIR must pass in to the methodargumentsan NVList initialized with TypeCodes and Flags describing the parameter types for the operation, in the order in which they appear in the IDL specification (left to right). A potentially-different NVList will be returned fromarguments, with the "in" and "inout" argument values supplied. If it does not call the methodset_exception, the DIR must supply the returned NVList with return values for any "out" arguments before returning, and may also change the return values for any "inout" arguments.- Parameters:
params- the arguments of the method, in the form of anNVListobject
-
arguments
Specifies method parameter types and retrieves "in" and "inout" argument values. Unless it calls the methodset_exception, the DIR must call this method exactly once, even if the method signature contains no parameters. Once the methodargumentsorset_exceptionhas been called, callingargumentson the sameServerRequestobject will result in aBAD_INV_ORDERsystem exception. The DIR must pass in to the methodargumentsan NVList initialized with TypeCodes and Flags describing the parameter types for the operation, in the order in which they appear in the IDL specification (left to right). A potentially-different NVList will be returned fromarguments, with the "in" and "inout" argument values supplied. If it does not call the methodset_exception, the DIR must supply the returned NVList with return values for any "out" arguments before returning, and it may also change the return values for any "inout" arguments.- Parameters:
args- the arguments of the method, in the form of an NVList- See Also:
-
result
Deprecated.use the methodset_resultSpecifies any return value for the call.Note that this method is deprecated; use the method
set_resultin its place.Unless the method
set_exceptionis called, if the invoked method has a non-void result type, the methodset_resultmust be called exactly once before the DIR returns. If the operation has a void result type, the methodset_resultmay optionally be called once with anAnyobject whose type istk_void. Calling the methodset_resultbefore the methodargumentshas been called or after the methodset_resultorset_exceptionhas been called will result in a BAD_INV_ORDER exception. Calling the methodset_resultwithout having previously called the methodctxwhen the IDL operation contains a context expression, or when the NVList passed to arguments did not describe all parameters passed by the client, may result in a MARSHAL system exception.- Parameters:
any- anAnyobject containing the return value to be set
-
set_result
Throws anorg.omg.CORBA.NO_IMPLEMENTexception.Specifies any return value for the call. Unless the method
set_exceptionis called, if the invoked method has a non-void result type, the methodset_resultmust be called exactly once before the DIR returns. If the operation has a void result type, the methodset_resultmay optionally be called once with anAnyobject whose type istk_void. Calling the methodset_resultbefore the methodargumentshas been called or after the methodset_resultorset_exceptionhas been called will result in a BAD_INV_ORDER exception. Calling the methodset_resultwithout having previously called the methodctxwhen the IDL operation contains a context expression, or when the NVList passed to arguments did not describe all parameters passed by the client, may result in a MARSHAL system exception.- Parameters:
any- anAnyobject containing the return value to be set- See Also:
-
except
Deprecated.use set_exception()The DIR may call set_exception at any time to return an exception to the client. The Any passed to set_exception must contain either a system exception or a user exception specified in the raises expression of the invoked operation's IDL definition. Passing in an Any that does not contain an exception will result in a BAD_PARAM system exception. Passing in an unlisted user exception will result in either the DIR receiving a BAD_PARAM system exception or in the client receiving an UNKNOWN_EXCEPTION system exception.- Parameters:
any- theAnyobject containing the exception
-
set_exception
Throws anorg.omg.CORBA.NO_IMPLEMENTexception.Returns the given exception to the client. This method is invoked by the DIR, which may call it at any time. The
Anyobject passed to this method must contain either a system exception or one of the user exceptions specified in the invoked operation's IDL definition. Passing in anAnyobject that does not contain an exception will cause a BAD_PARAM system exception to be thrown. Passing in an unlisted user exception will result in either the DIR receiving a BAD_PARAM system exception or in the client receiving an UNKNOWN_EXCEPTION system exception.- Parameters:
any- theAnyobject containing the exception- Throws:
BAD_PARAM- if the givenAnyobject does not contain an exception or the exception is an unlisted user exceptionUNKNOWN_EXCEPTION- if the given exception is an unlisted user exception and the DIR did not receive a BAD_PARAM exception- See Also:
-
ctx
Returns the context information specified in IDL for the operation when the operation is not an attribute access and the operation's IDL definition contains a context expression; otherwise it returns a nilContextreference. Calling the methodctxbefore the methodargumentshas been called or after the methodctx,set_result, orset_exceptionhas been called will result in a BAD_INV_ORDER system exception.- Returns:
- the context object that is to be used to resolve any context strings whose values need to be sent with the invocation.
- Throws:
BAD_INV_ORDER- if (1) the methodctxis called before the methodargumentsor (2) the methodctxis called after callingset_resultorset_exception
-