/* * Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package org.omg.CORBA; /** * An object containing the information necessary for * invoking a method. This class is * the cornerstone of the ORB Dynamic * Invocation Interface (DII), which allows dynamic creation and * invocation of requests. * A server cannot tell the difference between a client * invocation using a client stub and a request using the DII. *
 * A Request object consists of:
 * 
NVList containing arguments for the operation.NamedValue object, which has three
 * parts:
 *  Any object)
 *    
 * Request objects may also contain additional information,
 * depending on how an operation was defined in the original IDL
 * interface definition.  For example, where appropriate, they may contain
 * a NamedValue object to hold the return value or exception,
 * a context, a list of possible exceptions, and a list of
 * context strings that need to be resolved.
 * 
 * New Request objects are created using one of the
 * create_request methods in the Object class.
 * In other words, a create_request method is performed on the
 * object which is to be invoked.
 *
 * @see org.omg.CORBA.NamedValue
 *
 */
public abstract class Request {
    /**
     * Retrieves the the target object reference.
     *
     * @return                  the object reference that points to the
     *                    object implementation for the method
     *                    to be invoked
     */
    public abstract org.omg.CORBA.Object target();
    /**
     * Retrieves the name of the method to be invoked.
     *
     * @return                  the name of the method to be invoked
     */
    public abstract String operation();
    /**
     * Retrieves the NVList object containing the arguments
     * to the method being invoked.  The elements in the list are
     * NamedValue objects, with each one describing an argument
     * to the method.
     *
     * @return  the NVList object containing the arguments
     *                  for the method
     *
     */
    public abstract NVList arguments();
    /**
     * Retrieves the NamedValue object containing the return
     * value for the method.
     *
     * @return          the NamedValue object containing the result
     *                          of the method
     */
    public abstract NamedValue result();
    /**
     * Retrieves the Environment object for this request.
     * It contains the exception that the method being invoked has
     * thrown (after the invocation returns).
     *
     *
     * @return  the Environment object for this request
     */
    public abstract Environment env();
    /**
     * Retrieves the ExceptionList object for this request.
     * This list contains TypeCode objects describing the
     * exceptions that may be thrown by the method being invoked.
     *
     * @return  the ExceptionList object describing the exceptions
     *            that may be thrown by the method being invoked
     */
    public abstract ExceptionList exceptions();
    /**
     * Retrieves the ContextList object for this request.
     * This list contains context Strings that need to
     * be resolved and sent with the invocation.
     *
     *
     * @return                  the list of context strings whose values
     *                          need to be resolved and sent with the
     *                          invocation.
     */
    public abstract ContextList contexts();
    /**
     * Retrieves the Context object for this request.
     * This is a list of properties giving information about the
     * client, the environment, or the circumstances of this request.
     *
     * @return          the Context object that is to be used
     *                          to resolve any context strings whose
     *                          values need to be sent with the invocation
     */
    public abstract Context ctx();
    /**
     * Sets this request's Context object to the one given.
     *
     * @param c         the new Context object to be used for
     *                          resolving context strings
     */
    public abstract void ctx(Context c);
    /**
     * Creates an input argument and adds it to this Request
     * object.
     *
     * @return          an Any object that contains the
     *                value and typecode for the input argument added
     */
    public abstract Any add_in_arg();
    /**
     * Creates an input argument with the given name and adds it to
     * this Request object.
     *
     * @param name              the name of the argument being added
     * @return          an Any object that contains the
     *                value and typecode for the input argument added
     */
    public abstract Any add_named_in_arg(String name);
    /**
     * Adds an input/output argument to this Request object.
     *
     * @return          an Any object that contains the
     *                value and typecode for the input/output argument added
     */
    public abstract Any add_inout_arg();
    /**
     * Adds an input/output argument with the given name to this
     * Request object.
     *
     * @param name              the name of the argument being added
     * @return          an Any object that contains the
     *                value and typecode for the input/output argument added
     */
    public abstract Any add_named_inout_arg(String name);
    /**
     * Adds an output argument to this Request object.
     *
     * @return          an Any object that contains the
     *                value and typecode for the output argument added
     */
    public abstract Any add_out_arg();
    /**
     * Adds an output argument with the given name to this
     * Request object.
     *
     * @param name              the name of the argument being added
     * @return          an Any object that contains the
     *                value and typecode for the output argument added
     */
    public abstract Any add_named_out_arg(String name);
    /**
     * Sets the typecode for the return
     * value of the method.
     *
     * @param tc                        the TypeCode object containing type information
     *                   for the return value
     */
    public abstract void set_return_type(TypeCode tc);
    /**
     * Returns the Any object that contains the value for the
     * result of the method.
     *
     * @return                  an Any object containing the value and
     *                   typecode for the return value
     */
    public abstract Any return_value();
    /**
     * Makes a synchronous invocation using the
     * information in the Request object. Exception information is
     * placed into the Request object's environment object.
     */
    public abstract void invoke();
    /**
     * Makes a oneway invocation on the
     * request. In other words, it does not expect or wait for a
     * response. Note that this can be used even if the operation was
     * not declared as oneway in the IDL declaration. No response or
     * exception information is returned.
     */
    public abstract void send_oneway();
    /**
     * Makes an asynchronous invocation on
     * the request. In other words, it does not wait for a response before it
     * returns to the user. The user can then later use the methods
     * poll_response and get_response to get
     * the result or exception information for the invocation.
     */
    public abstract void send_deferred();
    /**
     * Allows the user to determine
     * whether a response has been received for the invocation triggered
     * earlier with the send_deferred method.
     *
     * @return          true if the method response has
     *                          been received; false otherwise
     */
    public abstract boolean poll_response();
    /**
     * Allows the user to access the
     * response for the invocation triggered earlier with the
     * send_deferred method.
     *
     * @exception WrongTransaction  if the method get_response was invoked
     * from a different transaction's scope than the one from which the
     * request was originally sent. See the OMG Transaction Service specification
     * for details.
     */
    public abstract void get_response() throws WrongTransaction;
};