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