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

📄 outputbuffer.java

📁 Tomcat 4.1与WebServer集成组件的源代码包.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }    // ------------------------------------------------- Bytes Handling Methods    /**      * Sends the buffer data to the client output, checking the     * state of Response and calling the right interceptors.     *      * @param buf Byte buffer to be written to the response     * @param off Offset     * @param cnt Length     *      * @throws IOException An underlying IOException occurred     */    public void realWriteBytes(byte buf[], int off, int cnt)	throws IOException {        if (debug > 2)            log("realWrite(b, " + off + ", " + cnt + ") " + coyoteResponse);        if (closed)            return;        if (coyoteResponse == null)            return;        // If we really have something to write        if (cnt > 0) {            // real write to the adapter            outputChunk.setBytes(buf, off, cnt);            coyoteResponse.doWrite(outputChunk);        }    }    public void write(byte b[], int off, int len) throws IOException {        if (suspended)            return;        if (state == CHAR_STATE)            cb.flushBuffer();        state = BYTE_STATE;        writeBytes(b, off, len);    }    private void writeBytes(byte b[], int off, int len)         throws IOException {        if (closed)            return;        if (debug > 0)            log("write(b,off,len)");        bb.append(b, off, len);        bytesWritten += len;        // if called from within flush(), then immediately flush        // remaining bytes        if (doFlush) {            bb.flushBuffer();        }    }    // XXX Char or byte ?    public void writeByte(int b)        throws IOException {        if (suspended)            return;        if (state == CHAR_STATE)            cb.flushBuffer();        state = BYTE_STATE;        if (debug > 0)            log("write(b)");        bb.append( (byte)b );        bytesWritten++;    }    // ------------------------------------------------- Chars Handling Methods    public void write(int c)        throws IOException {        if (suspended)            return;        state = CHAR_STATE;        if (debug > 0)            log("writeChar(b)");        cb.append((char) c);        charsWritten++;    }    public void write(char c[])        throws IOException {        if (suspended)            return;        write(c, 0, c.length);    }    public void write(char c[], int off, int len)        throws IOException {        if (suspended)            return;        state = CHAR_STATE;        if (debug > 0)            log("write(c,off,len)" + cb.getLength() + " " + cb.getLimit());        cb.append(c, off, len);        charsWritten += len;    }    public void write(StringBuffer sb)        throws IOException {        if (suspended)            return;        state = CHAR_STATE;        if (debug > 1)            log("write(s,off,len)");        int len = sb.length();        charsWritten += len;        cb.append(sb);    }    /**     * Append a string to the buffer     */    public void write(String s, int off, int len)        throws IOException {        if (suspended)            return;        state=CHAR_STATE;        if (debug > 1)            log("write(s,off,len)");        charsWritten += len;        if (s==null)            s="null";        cb.append( s, off, len );    }    public void write(String s)        throws IOException {        if (suspended)            return;        state = CHAR_STATE;        if (s==null)            s="null";        write(s, 0, s.length());    }     public void flushChars()        throws IOException {        if (debug > 0)            log("flushChars() " + cb.getLength());        cb.flushBuffer();        state = BYTE_STATE;    }    public boolean flushCharsNeeded() {        return state == CHAR_STATE;    }    public void setEncoding(String s) {        enc = s;    }    public void realWriteChars(char c[], int off, int len)         throws IOException {        if (debug > 0)            log("realWrite(c,o,l) " + cb.getOffset() + " " + len);        if (!gotEnc)            setConverter();        if (debug > 0)            log("encoder:  " + conv + " " + gotEnc);        conv.convert(c, off, len);        conv.flushBuffer();	// ???    }    public void checkConverter()         throws IOException {        if (!gotEnc)            setConverter();    }    protected void setConverter()         throws IOException {        if (coyoteResponse != null)            enc = coyoteResponse.getCharacterEncoding();        if (debug > 0)            log("Got encoding: " + enc);        gotEnc = true;        if (enc == null)            enc = DEFAULT_ENCODING;        conv = (C2BConverter) encoders.get(enc);        if (conv == null) {            conv = new C2BConverter(bb, enc);            encoders.put(enc, conv);            /*            try {                conv = new C2BConverter(bb, enc);                encoders.put(enc, conv);            } catch (IOException e) {                conv = (C2BConverter) encoders.get(DEFAULT_ENCODING);                if (conv == null) {                    try {                        conv = new C2BConverter(bb, DEFAULT_ENCODING);                        encoders.put(DEFAULT_ENCODING, conv);                    } catch (IOException ex) {                        // Ignore                    }                }            }            */        }    }        // --------------------  BufferedOutputStream compatibility    /**     * Real write - this buffer will be sent to the client     */    public void flushBytes()        throws IOException {        if (debug > 0)            log("flushBytes() " + bb.getLength());        bb.flushBuffer();    }    public int getBytesWritten() {        return bytesWritten;    }    public int getCharsWritten() {        return charsWritten;    }    public int getContentWritten() {        return bytesWritten + charsWritten;    }    /**      * True if this buffer hasn't been used ( since recycle() ) -     * i.e. no chars or bytes have been added to the buffer.       */    public boolean isNew() {        return (bytesWritten == 0) && (charsWritten == 0);    }    public void setBufferSize(int size) {        if (size > bb.getLimit()) {// ??????	    bb.setLimit(size);	}    }    public void reset() {        //count=0;        bb.recycle();        bytesWritten = 0;        cb.recycle();        charsWritten = 0;        gotEnc = false;        enc = null;    }    public int getBufferSize() {	return bb.getLimit();    }    protected void log( String s ) {	System.out.println("OutputBuffer: " + s);    }}

⌨️ 快捷键说明

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