⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iiopoutputstream.java

📁 java jdk 1.4的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)IIOPOutputStream.java	1.30 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * Licensed Materials - Property of IBM * RMI-IIOP v1.0 * Copyright IBM Corp. 1998 1999  All Rights Reserved * * US Government Users Restricted Rights - Use, duplication or * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */package com.sun.corba.se.internal.io;import org.omg.CORBA.portable.OutputStream;import java.io.IOException;import java.io.DataOutputStream;import java.io.Serializable;import java.io.InvalidClassException;import java.io.StreamCorruptedException;import java.io.Externalizable;import java.io.ObjectStreamException;import java.io.NotSerializableException;import java.io.NotActiveException;import java.lang.reflect.InvocationTargetException;import java.util.Stack;import com.sun.corba.se.internal.io.ObjectStreamClass;import com.sun.corba.se.internal.util.Utility;import com.sun.corba.se.internal.util.RepositoryId;import javax.rmi.CORBA.Util;/** * IIOPOutputStream is ... * * @author  Stephen Lewallen * @version 0.01, 4/6/98 * @since   JDK1.1.6 */public class IIOPOutputStream    extends com.sun.corba.se.internal.io.OutputStreamHook{    private static final byte kFormatVersionOne = 1;    private org.omg.CORBA_2_3.portable.OutputStream orbStream;    private Object currentObject = null;    private ObjectStreamClass currentClassDesc = null;    private int recursionDepth = 0;    private int simpleWriteDepth = 0;    private IOException abortIOException = null;    private java.util.Stack classDescStack = new java.util.Stack();    // Used when calling an object's writeObject method    private Object[] writeObjectArglist = {this};    public IIOPOutputStream()	throws java.io.IOException    {	super();    }    public final void setOrbStream(org.omg.CORBA_2_3.portable.OutputStream os) {    	orbStream = os;    }    public final org.omg.CORBA_2_3.portable.OutputStream getOrbStream() {    	return orbStream;    }    public final void increaseRecursionDepth(){	recursionDepth++;    }    public final int decreaseRecursionDepth(){	return --recursionDepth;    }    /**     * Override the actions of the final method "writeObject()"     * in ObjectOutputStream.     * @since     JDK1.1.6     */    public final void writeObjectDelegate(Object obj)    /* throws IOException */    {	Util.writeAbstractObject((OutputStream)orbStream, obj);    	//orbStream.write_value((java.io.Serializable)obj);    }    public final void writeObjectOverride(Object obj)	throws IOException    {	writeObjectDelegate(obj);    }    /**     * Override the actions of the final method "writeObject()"     * in ObjectOutputStream.     * @since     JDK1.1.6     */    public final void simpleWriteObject(Object obj)    /* throws IOException */    {    	Object prevObject = currentObject;    	ObjectStreamClass prevClassDesc = currentClassDesc;    	simpleWriteDepth++;    	try {	    // if (!checkSpecialClasses(obj) && !checkSubstitutableSpecialClasses(obj))	    outputObject(obj);    	} catch (IOException ee) {    	    if (abortIOException == null)		abortIOException = ee;    	} finally {    	    /* Restore state of previous call incase this is a nested call */    	    simpleWriteDepth--;    	    currentObject = prevObject;    	    currentClassDesc = prevClassDesc;    	}    	/* If the recursion depth is 0, test for and clear the pending exception.    	 * If there is a pending exception throw it.    	 */    	IOException pending = abortIOException;    	if (simpleWriteDepth == 0)    	    abortIOException = null;    	if (pending != null) {    	    throwExceptionType(java.io.IOException.class, pending.getMessage());    	}    }    // Required by the superclass.    ObjectStreamField[] getFieldsNoCopy() {        return currentClassDesc.getFieldsNoCopy();    }    /**     * Override the actions of the final method "defaultWriteObject()"     * in ObjectOutputStream.     * @since     JDK1.1.6     */    public final void defaultWriteObjectDelegate()    /* throws IOException */    {        try {	    if (currentObject == null || currentClassDesc == null)		throw new NotActiveException("defaultWriteObjectDelegate");	    ObjectStreamField[] fields =		currentClassDesc.getFieldsNoCopy();	    if (fields.length > 0) {		outputClassFields(currentObject, currentClassDesc.forClass(),				  fields);	    }        }        catch(IOException ioe)	    {		throwExceptionType(java.io.IOException.class, ioe.getMessage());	    }    }    /**     * Override the actions of the final method "enableReplaceObject()"     * in ObjectOutputStream.     * @since     JDK1.1.6     */    public final boolean enableReplaceObjectDelegate(boolean enable)    /* throws SecurityException */    {        return false;		    }    protected final void annotateClass(Class cl) throws IOException{        throw new IOException("Method annotateClass not supported");    }    public final void close() throws IOException{        // no op    }    protected final void drain() throws IOException{        // no op    }    public final void flush() throws IOException{        try{            orbStream.flush();        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    protected final Object replaceObject(Object obj) throws IOException{        throw new IOException("Method replaceObject not supported");    }    /**     * Reset will disregard the state of any objects already written     * to the stream.  The state is reset to be the same as a new     * ObjectOutputStream.  The current point in the stream is marked     * as reset so the corresponding ObjectInputStream will be reset     * at the same point.  Objects previously written to the stream     * will not be refered to as already being in the stream.  They     * will be written to the stream again.     * @since     JDK1.1     */    public final void reset() throws IOException{        try{            //orbStream.reset();	    if (currentObject != null || currentClassDesc != null)		throw new IOException("Illegal call to reset");	    abortIOException = null;	    if (classDescStack == null)		classDescStack = new java.util.Stack();	    else		classDescStack.setSize(0);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void write(byte b[]) throws IOException{        try{            orbStream.write_octet_array(b, 0, b.length);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void write(byte b[], int off, int len) throws IOException{        try{            orbStream.write_octet_array(b, off, len);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void write(int data) throws IOException{        try{            orbStream.write_octet((byte)(data & 0xFF));        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeBoolean(boolean data) throws IOException{        try{            orbStream.write_boolean(data);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeByte(int data) throws IOException{        try{            orbStream.write_octet((byte)data);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeBytes(String data) throws IOException{        try{            byte buf[] = data.getBytes();            orbStream.write_octet_array(buf, 0, buf.length);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeChar(int data) throws IOException{        try{            orbStream.write_wchar((char)data);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeChars(String data) throws IOException{        try{            char buf[] = data.toCharArray();            orbStream.write_wchar_array(buf, 0, buf.length);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeDouble(double data) throws IOException{        try{            orbStream.write_double(data);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeFloat(float data) throws IOException{        try{            orbStream.write_float(data);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeInt(int data) throws IOException{        try{            orbStream.write_long(data);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeLong(long data) throws IOException{        try{            orbStream.write_longlong(data);        }        catch(Error e)	    {		throw new IOException(e.getMessage());	    }    }    public final void writeShort(int data) throws IOException{        try{            orbStream.write_short((short)data);

⌨️ 快捷键说明

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