CDROutputStreamBase.java revision 608:7e06bf1dcb09
1/*
2 * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25package com.sun.corba.se.impl.encoding;
26
27import java.io.IOException;
28import java.io.Serializable;
29import java.math.BigDecimal;
30import java.nio.ByteBuffer;
31
32import org.omg.CORBA.TypeCode;
33import org.omg.CORBA.Principal;
34import org.omg.CORBA.Any;
35
36import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
37import com.sun.corba.se.spi.orb.ORB;
38
39/**
40 * Describes CDROutputStream delegates and provides some
41 * implementation.  Non-default constructors are avoided in
42 * the delegation to separate instantiation from initialization,
43 * so we use init methods.
44 */
45abstract class CDROutputStreamBase extends java.io.OutputStream
46{
47    protected CDROutputStream parent;
48
49    // Required by parent CDROutputStream
50    public void setParent(CDROutputStream parent) {
51        this.parent = parent;
52    }
53
54    public void init(org.omg.CORBA.ORB orb,
55                     BufferManagerWrite bufferManager,
56                     byte streamFormatVersion) {
57        init(orb, false, bufferManager, streamFormatVersion, true);
58    }
59
60    // See EncapsOutputStream, the only one that uses the
61    // non-pooled ByteBuffers, for additional info.
62    protected abstract void init(org.omg.CORBA.ORB orb,
63                                 boolean littleEndian,
64                                 BufferManagerWrite bufferManager,
65                                 byte streamFormatVersion,
66                                 boolean usePooledByteBuffers);
67
68    public abstract void write_boolean(boolean value);
69    public abstract void write_char(char value);
70    public abstract void write_wchar(char value);
71    public abstract void write_octet(byte value);
72    public abstract void write_short(short value);
73    public abstract void write_ushort(short value);
74    public abstract void write_long(int value);
75    public abstract void write_ulong(int value);
76    public abstract void write_longlong(long value);
77    public abstract void write_ulonglong(long value);
78    public abstract void write_float(float value);
79    public abstract void write_double(double value);
80    public abstract void write_string(String value);
81    public abstract void write_wstring(String value);
82    public abstract void write_boolean_array(boolean[] value, int offset, int length);
83    public abstract void write_char_array(char[] value, int offset, int length);
84    public abstract void write_wchar_array(char[] value, int offset, int length);
85    public abstract void write_octet_array(byte[] value, int offset, int length);
86    public abstract void write_short_array(short[] value, int offset, int length);
87    public abstract void write_ushort_array(short[] value, int offset, int length);
88    public abstract void write_long_array(int[] value, int offset, int length);
89    public abstract void write_ulong_array(int[] value, int offset, int length);
90    public abstract void write_longlong_array(long[] value, int offset, int length);
91    public abstract void write_ulonglong_array(long[] value, int offset, int length);
92    public abstract void write_float_array(float[] value, int offset, int length);
93    public abstract void write_double_array(double[] value, int offset, int length);
94    public abstract void write_Object(org.omg.CORBA.Object value);
95    public abstract void write_TypeCode(TypeCode value);
96    public abstract void write_any(Any value);
97    public abstract void write_Principal(Principal value);
98    public void write(int b) throws java.io.IOException {
99        throw new org.omg.CORBA.NO_IMPLEMENT();
100    }
101    public abstract void write_fixed(java.math.BigDecimal value);
102    public void write_Context(org.omg.CORBA.Context ctx,
103                              org.omg.CORBA.ContextList contexts) {
104        throw new org.omg.CORBA.NO_IMPLEMENT();
105    }
106
107    public abstract org.omg.CORBA.ORB orb();
108
109    // org.omg.CORBA_2_3.portable.OutputStream
110    public abstract void write_value(java.io.Serializable value);
111    public abstract void write_value(java.io.Serializable value, java.lang.Class clz);
112    public abstract void write_value(java.io.Serializable value, String repository_id);
113    public abstract void write_value(java.io.Serializable value,
114                                     org.omg.CORBA.portable.BoxedValueHelper factory);
115    public abstract void write_abstract_interface(java.lang.Object obj);
116
117    // java.io.OutputStream
118//     public abstract void write(byte b[]) throws IOException;
119//     public abstract void write(byte b[], int off, int len) throws IOException;
120//     public abstract void flush() throws IOException;
121//     public abstract void close() throws IOException;
122
123    // com.sun.corba.se.impl.encoding.MarshalOutputStream
124    public abstract void start_block();
125    public abstract void end_block();
126    public abstract void putEndian();
127    public abstract void writeTo(java.io.OutputStream s)
128        throws IOException;
129    public abstract byte[] toByteArray();
130
131    // org.omg.CORBA.DataOutputStream
132    public abstract void write_Abstract (java.lang.Object value);
133    public abstract void write_Value (java.io.Serializable value);
134    public abstract void write_any_array(org.omg.CORBA.Any[] seq, int offset, int length);
135
136    // org.omg.CORBA.portable.ValueBase
137    public abstract String[] _truncatable_ids();
138
139    // Needed by request and reply messages for GIOP versions >= 1.2 only.
140    abstract void setHeaderPadding(boolean headerPadding);
141
142    // Required by IIOPOutputStream and other subclasses
143    public abstract int getSize();
144
145    public abstract int getIndex();
146    public abstract void setIndex(int value);
147
148    public abstract ByteBuffer getByteBuffer();
149    public abstract void setByteBuffer(ByteBuffer byteBuffer);
150
151    public abstract boolean isLittleEndian();
152
153    public abstract ByteBufferWithInfo getByteBufferWithInfo();
154    public abstract void setByteBufferWithInfo(ByteBufferWithInfo bbwi);
155
156    public abstract BufferManagerWrite getBufferManager();
157
158    public abstract void write_fixed(java.math.BigDecimal bigDecimal, short digits, short scale);
159    public abstract void writeOctetSequenceTo(org.omg.CORBA.portable.OutputStream s);
160
161    public abstract GIOPVersion getGIOPVersion();
162
163    public abstract void writeIndirection(int tag, int posIndirectedTo);
164
165    abstract void freeInternalCaches();
166
167    abstract void printBuffer();
168
169    abstract void alignOnBoundary(int octetBoundary);
170
171    // org.omg.CORBA.portable.ValueOutputStream
172
173    public abstract void start_value(String rep_id);
174
175    public abstract void end_value();
176}
177