cdrinputstream.java

来自「JAVA 所有包」· Java 代码 · 共 520 行 · 第 1/2 页

JAVA
520
字号
/* * @(#)CDRInputStream.java	1.35 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.impl.encoding;import java.io.IOException;import java.io.Serializable;import java.math.BigDecimal;import java.nio.ByteBuffer;import org.omg.CORBA.TypeCode;import org.omg.CORBA.Principal;import org.omg.CORBA.Any;import com.sun.org.omg.SendingContext.CodeBase;import com.sun.corba.se.pept.protocol.MessageMediator;import com.sun.corba.se.spi.logging.CORBALogDomains;import com.sun.corba.se.spi.orb.ORB;import com.sun.corba.se.spi.ior.iiop.GIOPVersion;import com.sun.corba.se.spi.protocol.CorbaMessageMediator;import com.sun.corba.se.impl.logging.ORBUtilSystemException;import com.sun.corba.se.impl.encoding.CodeSetConversion;import com.sun.corba.se.impl.encoding.OSFCodeSetRegistry;import com.sun.corba.se.impl.orbutil.ORBUtility;import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;/** * This is delegates to the real implementation. * * NOTE: * * Before using the stream for valuetype unmarshaling, one must call * performORBVersionSpecificInit(). */public abstract class CDRInputStream    extends org.omg.CORBA_2_3.portable.InputStream    implements com.sun.corba.se.impl.encoding.MarshalInputStream,               org.omg.CORBA.DataInputStream, org.omg.CORBA.portable.ValueInputStream{    protected CorbaMessageMediator messageMediator;    private CDRInputStreamBase impl;    // We can move this out somewhere later.  For now, it serves its purpose    // to create a concrete CDR delegate based on the GIOP version.    private static class InputStreamFactory {                public static CDRInputStreamBase newInputStream(	        ORB orb, GIOPVersion version, byte encodingVersion) {            switch(version.intValue()) {                case GIOPVersion.VERSION_1_0:                    return new CDRInputStream_1_0();                case GIOPVersion.VERSION_1_1:                    return new CDRInputStream_1_1();                case GIOPVersion.VERSION_1_2:		    if (encodingVersion != Message.CDR_ENC_VERSION) {			return			  new IDLJavaSerializationInputStream(encodingVersion);		    }                    return new CDRInputStream_1_2();		    // else fall through and report exception.                default:		    ORBUtilSystemException wrapper = ORBUtilSystemException.get( orb,			CORBALogDomains.RPC_ENCODING ) ;		    throw wrapper.unsupportedGiopVersion( version ) ;            }        }    }    // Required for the case when a ClientResponseImpl is    // created with a SystemException due to a dead server/closed    // connection with no warning.  Note that the stream will    // not be initialized in this case.    //     // Probably also required by ServerRequestImpl.    //     // REVISIT.    public CDRInputStream() {    }    public CDRInputStream(CDRInputStream is) {        impl = is.impl.dup();        impl.setParent(this);    }    public CDRInputStream(org.omg.CORBA.ORB orb,                          ByteBuffer byteBuffer,                          int size,                          boolean littleEndian,                          GIOPVersion version,			  byte encodingVersion,                          BufferManagerRead bufMgr)    {        impl = InputStreamFactory.newInputStream((ORB)orb, version,						 encodingVersion);        impl.init(orb, byteBuffer, size, littleEndian, bufMgr);        impl.setParent(this);    }    // org.omg.CORBA.portable.InputStream    public final boolean read_boolean() {        return impl.read_boolean();    }    public final char read_char() {        return impl.read_char();    }    public final char read_wchar() {        return impl.read_wchar();    }    public final byte read_octet() {        return impl.read_octet();    }    public final short read_short() {        return impl.read_short();    }    public final short read_ushort() {        return impl.read_ushort();    }    public final int read_long() {        return impl.read_long();    }    public final int read_ulong() {        return impl.read_ulong();    }    public final long read_longlong() {        return impl.read_longlong();    }    public final long read_ulonglong() {        return impl.read_ulonglong();    }    public final float read_float() {        return impl.read_float();    }    public final double read_double() {        return impl.read_double();    }    public final String read_string() {        return impl.read_string();    }    public final String read_wstring() {        return impl.read_wstring();    }    public final void read_boolean_array(boolean[] value, int offset, int length) {        impl.read_boolean_array(value, offset, length);    }    public final void read_char_array(char[] value, int offset, int length) {        impl.read_char_array(value, offset, length);    }    public final void read_wchar_array(char[] value, int offset, int length) {        impl.read_wchar_array(value, offset, length);    }    public final void read_octet_array(byte[] value, int offset, int length) {        impl.read_octet_array(value, offset, length);    }    public final void read_short_array(short[] value, int offset, int length) {        impl.read_short_array(value, offset, length);    }    public final void read_ushort_array(short[] value, int offset, int length) {        impl.read_ushort_array(value, offset, length);    }    public final void read_long_array(int[] value, int offset, int length) {        impl.read_long_array(value, offset, length);    }    public final void read_ulong_array(int[] value, int offset, int length) {        impl.read_ulong_array(value, offset, length);    }    public final void read_longlong_array(long[] value, int offset, int length) {        impl.read_longlong_array(value, offset, length);    }    public final void read_ulonglong_array(long[] value, int offset, int length) {        impl.read_ulonglong_array(value, offset, length);    }    public final void read_float_array(float[] value, int offset, int length) {        impl.read_float_array(value, offset, length);    }    public final void read_double_array(double[] value, int offset, int length) {        impl.read_double_array(value, offset, length);    }    public final org.omg.CORBA.Object read_Object() {        return impl.read_Object();    }    public final TypeCode read_TypeCode() {        return impl.read_TypeCode();    }    public final Any read_any() {        return impl.read_any();    }    public final Principal read_Principal() {        return impl.read_Principal();    }    public final int read() throws java.io.IOException {        return impl.read();    }    public final java.math.BigDecimal read_fixed() {        return impl.read_fixed();    }    public final org.omg.CORBA.Context read_Context() {        return impl.read_Context();    }    public final org.omg.CORBA.Object read_Object(java.lang.Class clz) {        return impl.read_Object(clz);    }    public final org.omg.CORBA.ORB orb() {        return impl.orb();    }    // org.omg.CORBA_2_3.portable.InputStream    public final java.io.Serializable read_value() {        return impl.read_value();    }    public final java.io.Serializable read_value(java.lang.Class clz) {        return impl.read_value(clz);    }    public final java.io.Serializable read_value(org.omg.CORBA.portable.BoxedValueHelper factory) {        return impl.read_value(factory);    }    public final java.io.Serializable read_value(java.lang.String rep_id) {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?