Previous | Table of Contents | Next |
LocateRequest messages may be sent from a client to a server to determine the following regarding a specified object reference:
• whether the current server is capable of directly receiving requests for the object reference, and if not,
• to what address requests for the object reference should be sent.
Note that this information is also provided through the Request message, but that some clients might prefer not to support
retransmission of potentially large messages that might be implied by a LOCATION_FORWARD status in a Reply message. That is,
client use of this represents a potential optimization.
LocateRequest messages have two elements, encoded in this order:
• A GIOP message header
• A LocateRequestHeader
15.4.5.1 LocateRequest Header.
The LocateRequest header is defined as follows:
module GIOP { // IDL extended for version 1.2 and 1.3
// GIOP 1.0struct LocateRequestHeader_1_0 {
// Renamed LocationRequestHeader unsigned long request_id; sequence <octet> object_key;
};
// GIOP 1.1 typedef LocateRequestHeader_1_0 LocateRequestHeader_1_1; // Same Header contents for 1.0 and 1.1
// GIOP 1.2, 1.3
struct LocateRequestHeader_1_2 {unsigned long request_id;TargetAddress target;
}; typedef LocateRequestHeader_1_2 LocateRequestHeader_1_3; };
The members are defined as follows:
• request_id is used to associate LocateReply messages with LocateRequest ones. The client (requester) is responsible for generating values; see Section 15.4.2, “Request Message,? on page 15-34 for the applicable rules.
• For GIOP 1.0 and 1.1, object_key identifies the object being located. In an IIOP context, this value is obtained from the object_key field from the encapsulated IIOP::ProfileBody in the IIOP profile of the IOR for the target object. When GIOP is mapped to other transports, their IOR profiles must also contain an appropriate corresponding value. This value is only meaningful to the server and is not interpreted or modified by the client.
• For GIOP 1.2, 1.3, target identifies the object being located. The possible values of this union are:
• KeyAddr is the object_key field from the transport-specific GIOP profile (e.g., from the encapsulated IIOP profile of the IOR for the target object). This value is only meaningful to the server and is not interpreted or modified by the client. • ProfileAddr is the transport-specific GIOP profile selected for the target’s IOR by the client ORB. • IORAddressingInfo is the full IOR of the target object. The selected_profile_index indicates the transport-specific GIOP profile that was selected by the client ORB.
See Section 15.6, “Object Location,? on page 15-49 for details on the use of
LocateRequest.