buffermanagerwrite.java
来自「java jdk 1.4的源码」· Java 代码 · 共 120 行
JAVA
120 行
/* * @(#)BufferManagerWrite.java 1.8 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.internal.iiop;import com.sun.corba.se.internal.iiop.ByteBufferWithInfo;import java.util.Iterator;import com.sun.corba.se.internal.iiop.CDROutputStream;import com.sun.corba.se.internal.iiop.IIOPOutputStream;import com.sun.corba.se.internal.iiop.IIOPInputStream;public abstract class BufferManagerWrite{ /** * Case: Called from CDROutputStream constructor * before starting to marshal. * * Does: * * bbwi = new ByteBufferWithInfo(size); * * Fill in initial message headers and adjust bbwi.* appropriately * * Returns bbwi */ // This has taken on a different meaning -- simply allocating the // first bbwi. It doesn't marshal in the header. public abstract ByteBufferWithInfo getInitialBuffer (int size); public abstract int getInitialBufferSize(); /* * Case: Called from CDROutputStream.grow (instead of current default). * * 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 (); /** * Case: Access bufferQ to no fragments, grow, or collect. * * * IIOPOutputStream.writeTo needs buffer Q to write its * contents on the connection. * * Does: * * Abstracts bufferQ. */ // public Iterator iterator (); // A reference to the IIOPOutputStream will be required when // sending fragments. public void setIIOPOutputStream(IIOPOutputStream stream) { this.stream = stream; } protected IIOPOutputStream stream;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?