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

📄 streamtarget.java

📁 基于Jabber协议的即时消息服务器
💻 JAVA
字号:
/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */package org.jivesoftware.util.log.output.io;import org.jivesoftware.util.log.format.Formatter;import org.jivesoftware.util.log.output.AbstractOutputTarget;import java.io.IOException;import java.io.OutputStream;/** * A basic target that writes to an OutputStream. * * @author <a href="mailto:peter@apache.org">Peter Donald</a> */public class StreamTarget extends AbstractOutputTarget {    ///OutputStream we are writing to    private OutputStream m_outputStream;    /**     * Constructor that writes to a stream and uses a particular formatter.     *     * @param outputStream the OutputStream to send to     * @param formatter    the Formatter to use     */    public StreamTarget(final OutputStream outputStream, final Formatter formatter) {        super(formatter);        if (null != outputStream) {            setOutputStream(outputStream);            open();        }    }    /**     * Set the output stream.     * Close down old stream and send tail if appropriate.     *     * @param outputStream the new OutputStream     */    protected synchronized void setOutputStream(final OutputStream outputStream) {        if (null == outputStream) {            throw new NullPointerException("outputStream property must not be null");        }        m_outputStream = outputStream;    }    /**     * Abstract method that will output event.     *     * @param data the data to be output     */    protected synchronized void write(final String data) {        //Cache method local version        //so that can be replaced in another thread        final OutputStream outputStream = m_outputStream;        if (null == outputStream) {            final String message = "Attempted to send data '" + data + "' to Null OutputStream";            getErrorHandler().error(message, null, null);            return;        }        try {            //TODO: We should be able to specify encoding???            outputStream.write(data.getBytes("UTF-8"));            outputStream.flush();        }        catch (final IOException ioe) {            final String message = "Error writing data '" + data + "' to OutputStream";            getErrorHandler().error(message, ioe, null);        }    }    /**     * Shutdown target.     * Attempting to send to target after close() will cause errors to be logged.     */    public synchronized void close() {        super.close();        shutdownStream();    }    /**     * Shutdown output stream.     */    protected synchronized void shutdownStream() {        final OutputStream outputStream = m_outputStream;        m_outputStream = null;        try {            if (null != outputStream) {                outputStream.close();            }        }        catch (final IOException ioe) {            getErrorHandler().error("Error closing OutputStream", ioe, null);        }    }}

⌨️ 快捷键说明

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