1. /*
  2. * @(#)CDROutputStreamBase.java 1.18 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.spi.orb.ORB;
  17. /**
  18. * Describes CDROutputStream delegates and provides some
  19. * implementation. Non-default constructors are avoided in
  20. * the delegation to separate instantiation from initialization,
  21. * so we use init methods.
  22. */
  23. abstract class CDROutputStreamBase extends java.io.OutputStream
  24. {
  25. protected CDROutputStream parent;
  26. // Required by parent CDROutputStream
  27. public void setParent(CDROutputStream parent) {
  28. this.parent = parent;
  29. }
  30. public void init(org.omg.CORBA.ORB orb,
  31. BufferManagerWrite bufferManager,
  32. byte streamFormatVersion) {
  33. init(orb, false, bufferManager, streamFormatVersion, true);
  34. }
  35. // See EncapsOutputStream, the only one that uses the
  36. // non-pooled ByteBuffers, for additional info.
  37. protected abstract void init(org.omg.CORBA.ORB orb,
  38. boolean littleEndian,
  39. BufferManagerWrite bufferManager,
  40. byte streamFormatVersion,
  41. boolean usePooledByteBuffers);
  42. public abstract void write_boolean(boolean value);
  43. public abstract void write_char(char value);
  44. public abstract void write_wchar(char value);
  45. public abstract void write_octet(byte value);
  46. public abstract void write_short(short value);
  47. public abstract void write_ushort(short value);
  48. public abstract void write_long(int value);
  49. public abstract void write_ulong(int value);
  50. public abstract void write_longlong(long value);
  51. public abstract void write_ulonglong(long value);
  52. public abstract void write_float(float value);
  53. public abstract void write_double(double value);
  54. public abstract void write_string(String value);
  55. public abstract void write_wstring(String value);
  56. public abstract void write_boolean_array(boolean[] value, int offset, int length);
  57. public abstract void write_char_array(char[] value, int offset, int length);
  58. public abstract void write_wchar_array(char[] value, int offset, int length);
  59. public abstract void write_octet_array(byte[] value, int offset, int length);
  60. public abstract void write_short_array(short[] value, int offset, int length);
  61. public abstract void write_ushort_array(short[] value, int offset, int length);
  62. public abstract void write_long_array(int[] value, int offset, int length);
  63. public abstract void write_ulong_array(int[] value, int offset, int length);
  64. public abstract void write_longlong_array(long[] value, int offset, int length);
  65. public abstract void write_ulonglong_array(long[] value, int offset, int length);
  66. public abstract void write_float_array(float[] value, int offset, int length);
  67. public abstract void write_double_array(double[] value, int offset, int length);
  68. public abstract void write_Object(org.omg.CORBA.Object value);
  69. public abstract void write_TypeCode(TypeCode value);
  70. public abstract void write_any(Any value);
  71. public abstract void write_Principal(Principal value);
  72. public void write(int b) throws java.io.IOException {
  73. throw new org.omg.CORBA.NO_IMPLEMENT();
  74. }
  75. public abstract void write_fixed(java.math.BigDecimal value);
  76. public void write_Context(org.omg.CORBA.Context ctx,
  77. org.omg.CORBA.ContextList contexts) {
  78. throw new org.omg.CORBA.NO_IMPLEMENT();
  79. }
  80. public abstract org.omg.CORBA.ORB orb();
  81. // org.omg.CORBA_2_3.portable.OutputStream
  82. public abstract void write_value(java.io.Serializable value);
  83. public abstract void write_value(java.io.Serializable value, java.lang.Class clz);
  84. public abstract void write_value(java.io.Serializable value, String repository_id);
  85. public abstract void write_value(java.io.Serializable value,
  86. org.omg.CORBA.portable.BoxedValueHelper factory);
  87. public abstract void write_abstract_interface(java.lang.Object obj);
  88. // java.io.OutputStream
  89. // public abstract void write(byte b[]) throws IOException;
  90. // public abstract void write(byte b[], int off, int len) throws IOException;
  91. // public abstract void flush() throws IOException;
  92. // public abstract void close() throws IOException;
  93. // com.sun.corba.se.impl.encoding.MarshalOutputStream
  94. public abstract void start_block();
  95. public abstract void end_block();
  96. public abstract void putEndian();
  97. public abstract void writeTo(java.io.OutputStream s)
  98. throws IOException;
  99. public abstract byte[] toByteArray();
  100. // org.omg.CORBA.DataOutputStream
  101. public abstract void write_Abstract (java.lang.Object value);
  102. public abstract void write_Value (java.io.Serializable value);
  103. public abstract void write_any_array(org.omg.CORBA.Any[] seq, int offset, int length);
  104. // org.omg.CORBA.portable.ValueBase
  105. public abstract String[] _truncatable_ids();
  106. // Needed by request and reply messages for GIOP versions >= 1.2 only.
  107. abstract void setHeaderPadding(boolean headerPadding);
  108. // Required by IIOPOutputStream and other subclasses
  109. public abstract int getSize();
  110. public abstract int getIndex();
  111. public abstract void setIndex(int value);
  112. public abstract ByteBuffer getByteBuffer();
  113. public abstract void setByteBuffer(ByteBuffer byteBuffer);
  114. public abstract boolean isLittleEndian();
  115. public abstract ByteBufferWithInfo getByteBufferWithInfo();
  116. public abstract void setByteBufferWithInfo(ByteBufferWithInfo bbwi);
  117. public abstract BufferManagerWrite getBufferManager();
  118. public abstract void write_fixed(java.math.BigDecimal bigDecimal, short digits, short scale);
  119. public abstract void writeOctetSequenceTo(org.omg.CORBA.portable.OutputStream s);
  120. public abstract GIOPVersion getGIOPVersion();
  121. public abstract void writeIndirection(int tag, int posIndirectedTo);
  122. abstract void freeInternalCaches();
  123. abstract void printBuffer();
  124. abstract void alignOnBoundary(int octetBoundary);
  125. // org.omg.CORBA.portable.ValueOutputStream
  126. public abstract void start_value(String rep_id);
  127. public abstract void end_value();
  128. }