1. /*
  2. * @(#)CDRInputStreamBase.java 1.17 04/03/01
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.corba.se.impl.encoding;
  8. import java.io.IOException;
  9. import java.io.Serializable;
  10. import java.math.BigDecimal;
  11. import java.nio.ByteBuffer;
  12. import org.omg.CORBA.TypeCode;
  13. import org.omg.CORBA.Principal;
  14. import org.omg.CORBA.Any;
  15. import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
  16. import com.sun.corba.se.impl.orbutil.ORBConstants;
  17. import com.sun.org.omg.SendingContext.CodeBase;
  18. /**
  19. * Describes CDRInputStream delegates and provides some
  20. * implementation. Non-default constructors are avoided in
  21. * the delegation to separate instantiation from initialization,
  22. * so we use init methods.
  23. */
  24. abstract class CDRInputStreamBase extends java.io.InputStream
  25. {
  26. protected CDRInputStream parent;
  27. public void setParent(CDRInputStream parent) {
  28. this.parent = parent;
  29. }
  30. public abstract void init(org.omg.CORBA.ORB orb,
  31. ByteBuffer byteBuffer,
  32. int size,
  33. boolean littleEndian,
  34. BufferManagerRead bufferManager);
  35. // org.omg.CORBA.portable.InputStream
  36. public abstract boolean read_boolean();
  37. public abstract char read_char();
  38. public abstract char read_wchar();
  39. public abstract byte read_octet();
  40. public abstract short read_short();
  41. public abstract short read_ushort();
  42. public abstract int read_long();
  43. public abstract int read_ulong();
  44. public abstract long read_longlong();
  45. public abstract long read_ulonglong();
  46. public abstract float read_float();
  47. public abstract double read_double();
  48. public abstract String read_string();
  49. public abstract String read_wstring();
  50. public abstract void read_boolean_array(boolean[] value, int offset, int length);
  51. public abstract void read_char_array(char[] value, int offset, int length);
  52. public abstract void read_wchar_array(char[] value, int offset, int length);
  53. public abstract void read_octet_array(byte[] value, int offset, int length);
  54. public abstract void read_short_array(short[] value, int offset, int length);
  55. public abstract void read_ushort_array(short[] value, int offset, int length);
  56. public abstract void read_long_array(int[] value, int offset, int length);
  57. public abstract void read_ulong_array(int[] value, int offset, int length);
  58. public abstract void read_longlong_array(long[] value, int offset, int length);
  59. public abstract void read_ulonglong_array(long[] value, int offset, int length);
  60. public abstract void read_float_array(float[] value, int offset, int length);
  61. public abstract void read_double_array(double[] value, int offset, int length);
  62. public abstract org.omg.CORBA.Object read_Object();
  63. public abstract TypeCode read_TypeCode();
  64. public abstract Any read_any();
  65. public abstract Principal read_Principal();
  66. public int read() throws java.io.IOException {
  67. throw new org.omg.CORBA.NO_IMPLEMENT();
  68. }
  69. public abstract java.math.BigDecimal read_fixed();
  70. public org.omg.CORBA.Context read_Context() {
  71. throw new org.omg.CORBA.NO_IMPLEMENT();
  72. }
  73. public abstract org.omg.CORBA.Object read_Object(java.lang.Class clz);
  74. public abstract org.omg.CORBA.ORB orb();
  75. // org.omg.CORBA_2_3.portable.InputStream
  76. public abstract java.io.Serializable read_value();
  77. public abstract java.io.Serializable read_value(java.lang.Class clz);
  78. public abstract java.io.Serializable read_value(org.omg.CORBA.portable.BoxedValueHelper factory);
  79. public abstract java.io.Serializable read_value(java.lang.String rep_id);
  80. public abstract java.io.Serializable read_value(java.io.Serializable value);
  81. public abstract java.lang.Object read_abstract_interface();
  82. public abstract java.lang.Object read_abstract_interface(java.lang.Class clz);
  83. // com.sun.corba.se.impl.encoding.MarshalInputStream
  84. public abstract void consumeEndian();
  85. public abstract int getPosition();
  86. // org.omg.CORBA.DataInputStream
  87. public abstract java.lang.Object read_Abstract ();
  88. public abstract java.io.Serializable read_Value ();
  89. public abstract void read_any_array (org.omg.CORBA.AnySeqHolder seq, int offset, int length);
  90. public abstract void read_boolean_array (org.omg.CORBA.BooleanSeqHolder seq, int offset, int length);
  91. public abstract void read_char_array (org.omg.CORBA.CharSeqHolder seq, int offset, int length);
  92. public abstract void read_wchar_array (org.omg.CORBA.WCharSeqHolder seq, int offset, int length);
  93. public abstract void read_octet_array (org.omg.CORBA.OctetSeqHolder seq, int offset, int length);
  94. public abstract void read_short_array (org.omg.CORBA.ShortSeqHolder seq, int offset, int length);
  95. public abstract void read_ushort_array (org.omg.CORBA.UShortSeqHolder seq, int offset, int length);
  96. public abstract void read_long_array (org.omg.CORBA.LongSeqHolder seq, int offset, int length);
  97. public abstract void read_ulong_array (org.omg.CORBA.ULongSeqHolder seq, int offset, int length);
  98. public abstract void read_ulonglong_array (org.omg.CORBA.ULongLongSeqHolder seq, int offset, int length);
  99. public abstract void read_longlong_array (org.omg.CORBA.LongLongSeqHolder seq, int offset, int length);
  100. public abstract void read_float_array (org.omg.CORBA.FloatSeqHolder seq, int offset, int length);
  101. public abstract void read_double_array (org.omg.CORBA.DoubleSeqHolder seq, int offset, int length);
  102. // org.omg.CORBA.portable.ValueBase
  103. public abstract String[] _truncatable_ids();
  104. // java.io.InputStream
  105. // REVISIT - should we make these throw UnsupportedOperationExceptions?
  106. // Right now, they'll go up to the java.io versions!
  107. // public abstract int read(byte b[]) throws IOException;
  108. // public abstract int read(byte b[], int off, int len) throws IOException
  109. // public abstract long skip(long n) throws IOException;
  110. // public abstract int available() throws IOException;
  111. // public abstract void close() throws IOException;
  112. public abstract void mark(int readlimit);
  113. public abstract void reset();
  114. // This should return false so that outside users (people using the JDK)
  115. // don't have any guarantees that mark/reset will work in their
  116. // custom marshaling code. This is necessary since they could do things
  117. // like expect obj1a == obj1b in the following code:
  118. //
  119. // is.mark(10000);
  120. // Object obj1a = is.readObject();
  121. // is.reset();
  122. // Object obj1b = is.readObject();
  123. //
  124. public boolean markSupported() { return false; }
  125. // Needed by AnyImpl and ServiceContexts
  126. public abstract CDRInputStreamBase dup();
  127. // Needed by TCUtility
  128. public abstract java.math.BigDecimal read_fixed(short digits, short scale);
  129. // Needed by TypeCodeImpl
  130. public abstract boolean isLittleEndian();
  131. // Needed by request and reply messages for GIOP versions >= 1.2 only.
  132. abstract void setHeaderPadding(boolean headerPadding);
  133. // Needed by IIOPInputStream and other subclasses
  134. public abstract ByteBuffer getByteBuffer();
  135. public abstract void setByteBuffer(ByteBuffer byteBuffer);
  136. public abstract void setByteBufferWithInfo(ByteBufferWithInfo bbwi);
  137. public abstract int getBufferLength();
  138. public abstract void setBufferLength(int value);
  139. public abstract int getIndex();
  140. public abstract void setIndex(int value);
  141. public abstract void orb(org.omg.CORBA.ORB orb);
  142. public abstract BufferManagerRead getBufferManager();
  143. public abstract GIOPVersion getGIOPVersion();
  144. abstract CodeBase getCodeBase();
  145. abstract void printBuffer();
  146. abstract void alignOnBoundary(int octetBoundary);
  147. abstract void performORBVersionSpecificInit();
  148. public abstract void resetCodeSetConverters();
  149. // ValueInputStream -------------------------
  150. public abstract void start_value();
  151. public abstract void end_value();
  152. }