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