1. /*
  2. * @(#)LocateRequestMessage_1_2.java 1.11 03/01/23
  3. *
  4. * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.corba.se.internal.iiop.messages;
  8. import com.sun.corba.se.internal.core.GIOPVersion;
  9. import com.sun.corba.se.internal.ior.ObjectKey;
  10. import com.sun.corba.se.internal.iiop.ORB;
  11. /**
  12. * This implements the GIOP 1.2 LocateRequest header.
  13. *
  14. * @author Ram Jeyaraman 05/14/2000
  15. * @version 1.0
  16. */
  17. public final class LocateRequestMessage_1_2 extends Message_1_2
  18. implements LocateRequestMessage {
  19. // Instance variables
  20. private ORB orb = null;
  21. private ObjectKey objectKey = null;
  22. private TargetAddress target = null;
  23. // Constructors
  24. LocateRequestMessage_1_2(ORB orb) {
  25. this.orb = orb;
  26. }
  27. LocateRequestMessage_1_2(ORB orb, int _request_id, TargetAddress _target) {
  28. super(Message.GIOPBigMagic, GIOPVersion.V1_2, FLAG_NO_FRAG_BIG_ENDIAN,
  29. Message.GIOPLocateRequest, 0);
  30. this.orb = orb;
  31. request_id = _request_id;
  32. target = _target;
  33. }
  34. // Accessor methods (LocateRequestMessage interface)
  35. public int getRequestId() {
  36. return this.request_id;
  37. }
  38. public ObjectKey getObjectKey() {
  39. if (this.objectKey == null) {
  40. // this will raise a MARSHAL exception upon errors.
  41. this.objectKey = MessageBase.extractObjectKey(target, orb);
  42. }
  43. return this.objectKey;
  44. }
  45. // IO methods
  46. public void read(org.omg.CORBA.portable.InputStream istream) {
  47. super.read(istream);
  48. this.request_id = istream.read_ulong();
  49. this.target = TargetAddressHelper.read(istream);
  50. getObjectKey(); // this does AddressingDisposition check
  51. }
  52. public void write(org.omg.CORBA.portable.OutputStream ostream) {
  53. super.write(ostream);
  54. ostream.write_ulong (this.request_id);
  55. nullCheck(this.target);
  56. TargetAddressHelper.write(ostream, this.target);
  57. }
  58. public final void callback(com.sun.corba.se.internal.iiop.MessageMediator m)
  59. throws java.io.IOException
  60. {
  61. m.handleInput(this);
  62. }
  63. } // class LocateRequestMessage_1_2