1. /*
  2. * @(#)FragmentMessage_1_2.java 1.9 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. /**
  10. * This implements the GIOP 1.2 Fragment header.
  11. *
  12. * @author Ram Jeyaraman 05/14/2000
  13. * @version 1.0
  14. */
  15. public final class FragmentMessage_1_2 extends Message_1_2
  16. implements FragmentMessage {
  17. // Constructors
  18. FragmentMessage_1_2() {}
  19. // This is currently never called.
  20. FragmentMessage_1_2(int _request_id) {
  21. super(Message.GIOPBigMagic, GIOPVersion.V1_2, FLAG_NO_FRAG_BIG_ENDIAN,
  22. Message.GIOPFragment, 0);
  23. this.message_type = GIOPFragment;
  24. request_id = _request_id;
  25. }
  26. FragmentMessage_1_2(Message_1_1 msg12) {
  27. this.magic = msg12.magic;
  28. this.GIOP_version = msg12.GIOP_version;
  29. this.flags = FLAG_NO_FRAG_BIG_ENDIAN;
  30. this.message_type = GIOPFragment;
  31. this.message_size = 0;
  32. switch (msg12.message_type) {
  33. case GIOPRequest :
  34. this.request_id = ((RequestMessage) msg12).getRequestId();
  35. break;
  36. case GIOPReply :
  37. this.request_id = ((ReplyMessage) msg12).getRequestId();
  38. break;
  39. case GIOPLocateRequest :
  40. this.request_id = ((LocateRequestMessage) msg12).getRequestId();
  41. break;
  42. case GIOPLocateReply :
  43. this.request_id = ((LocateReplyMessage) msg12).getRequestId();
  44. break;
  45. case GIOPFragment :
  46. this.request_id = ((FragmentMessage) msg12).getRequestId();
  47. break;
  48. }
  49. }
  50. // Accessor methods
  51. public int getRequestId() {
  52. return this.request_id;
  53. }
  54. public int getHeaderLength() {
  55. return GIOPMessageHeaderLength + 4;
  56. }
  57. // IO methods
  58. /* This will never be called, since we do not currently read the
  59. * request_id from an CDRInputStream. Instead we use the
  60. * readGIOP_1_2_requestId to read the requestId from a byte buffer.
  61. */
  62. public void read(org.omg.CORBA.portable.InputStream istream) {
  63. super.read(istream);
  64. this.request_id = istream.read_ulong();
  65. }
  66. public void write(org.omg.CORBA.portable.OutputStream ostream) {
  67. super.write(ostream);
  68. ostream.write_ulong(this.request_id);
  69. }
  70. public final void callback(com.sun.corba.se.internal.iiop.MessageMediator m)
  71. throws java.io.IOException
  72. {
  73. m.handleInput(this);
  74. }
  75. } // class FragmentMessage_1_2