buffermanagerwrite.java

来自「JAVA 所有包」· Java 代码 · 共 134 行

JAVA
134
字号
/* * @(#)BufferManagerWrite.java	1.11 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 com.sun.corba.se.spi.logging.CORBALogDomains;import com.sun.corba.se.spi.orb.ORB;import com.sun.corba.se.impl.encoding.ByteBufferWithInfo;import com.sun.corba.se.impl.logging.ORBUtilSystemException;/** * Defines the contract between the BufferManager and * CDR stream on the writing side.  The CDR stream * calls back to the BufferManagerWrite when it needs * more room in the output buffer to continue.  The * BufferManager can then grow the output buffer or * use some kind of fragmentation technique. */public abstract class BufferManagerWrite{    protected ORB orb ;    protected ORBUtilSystemException wrapper ;     BufferManagerWrite( ORB orb )     {	this.orb = orb ;	this.wrapper = ORBUtilSystemException.get( orb,	    CORBALogDomains.RPC_ENCODING ) ;    }    /**     * Has the stream sent out any fragments so far?     */    public abstract boolean sentFragment();    /**     * Has the entire message been sent?  (Has     * sendMessage been called?)     */    public boolean sentFullMessage() {        return sentFullMessage;    }    /**     * Returns the correct buffer size for this type of     * buffer manager as set in the ORB.     */    public abstract int getBufferSize();    /*     * Called from CDROutputStream.grow.     *     * bbwi.buf contains a byte array which needs to grow by bbwi.needed bytes.     *      * This can be handled in several ways:     *     * 1. Resize the bbwi.buf like the current implementation of     *    CDROutputStream.grow.     *     * 2. Collect the buffer for a later send:     *    this.bufQ.put(bbwi);     *    return new ByteBufferWithInfo(bbwi.length);     *     * 3. Send buffer as fragment:     *    Backpatch fragment size field in bbwi.buf.     *    Set more fragments bit in bbwi.buf.     *    this.connection.send(bbwi);     *    return reinitialized bbwi.buf with fragment header     *     * All cases should adjust the returned bbwi.* appropriately.     *     * Should set the bbwi.fragmented flag to true only in cases 2 and 3.     */    public abstract void overflow (ByteBufferWithInfo bbwi);    /**     * Called after Stub._invoke (i.e., before complete message has been sent).     *     * IIOPOutputStream.writeTo called from IIOPOutputStream.invoke      *     * Case: overflow was never called (bbwi.buf contains complete message).     *       Backpatch size field.     *       If growing or collecting:     *          this.bufQ.put(bbwi).     *          this.bufQ.iterate // However, see comment in getBufferQ     *             this.connection.send(fragment)     *       If streaming:     *          this.connection.send(bbwi).     *     * Case: overflow was called N times (bbwi.buf contains last buffer).     *       If growing or collecting:     *          this.bufQ.put(bbwi).     *          backpatch size field in first buffer.     *          this.bufQ.iterate // However, see comment in getBufferQ     *             this.connection.send(fragment)     *       If streaming:     *          backpatch fragment size field in bbwi.buf.     *          Set no more fragments bit.     *          this.connection.send(bbwi).     */    public abstract void sendMessage ();        /**      * A reference to the connection level stream will be required when     * sending fragments.     */    public void setOutputObject(Object outputObject) {        this.outputObject = outputObject;    }    /**     * Close the BufferManagerWrite and do any outstanding cleanup.     */     abstract public void close();    // XREVISIT - Currently a java.lang.Object during    // the rip-int-generic transition.  Should eventually    // become a GIOPOutputObject.    protected Object outputObject;    protected boolean sentFullMessage = false;}

⌨️ 快捷键说明

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