Previous | Table of Contents | Next |
A client of an object has an object reference that refers to that object. An object reference is a token that may be invoked
or passed as a parameter to an invocation on a different object. Invocation of an object involves specifying the object to
be invoked, the operation to be performed, and parameters to be given to the operation or returned from it.
The ORB manages the control transfer and data transfer to the object implementation and back to the client. In the event that
the ORB cannot complete the invocation, an exception response is provided. Ordinarily, a client calls a routine in its program
that performs the invocation and returns when the operation is complete.
Clients access object-type-specific stubs as library routines in their program (see
Figure 2-6 on page 2-13). The client program thus sees routines callable in the normal
way in its programming language. All implementations will provide a language-specific data type to use to refer to objects,
often an opaque pointer. The client then passes that object reference to the stub routines to initiate an invocation. The
stubs have access to the object reference representation and interact with the ORB to perform the invocation. (See the C Language
Mapping specification for additional, general information on language mapping of object references.)
Figure 2-6 The Structure of a Typical Client
An alternative set of library code is available to perform invocations on objects, for example when the object was not defined
at compile time. In that case, the client program provides additional information to name the type of the object and the method
being invoked, and performs a sequence of calls to specify the parameters and initiate the invocation.
Clients most commonly obtain object references by receiving them as output parameters from invocations on other objects for
which they have references. When a client is also an implementation, it receives object references as input parameters on
invocations to objects it implements. An object reference can also be converted to a string that can be stored in files or
preserved or communicated by different means and subsequently turned back into an object reference by the ORB that produced
the string.