Home / Class/ ByteBufOutputStream Class — netty Architecture

ByteBufOutputStream Class — netty Architecture

Architecture documentation for the ByteBufOutputStream class in ByteBufOutputStream.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca["ByteBufOutputStream"]
  38b742d4_f5ba_8e56_4ae2_ccdfbe05d010["ByteBufOutputStream.java"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|defined in| 38b742d4_f5ba_8e56_4ae2_ccdfbe05d010
  65385e92_8d8f_eee5_e23c_ea8442aaac98["ByteBufOutputStream()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 65385e92_8d8f_eee5_e23c_ea8442aaac98
  043eeb2c_c943_12a3_2237_36368287a3cc["writtenBytes()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 043eeb2c_c943_12a3_2237_36368287a3cc
  8948913d_f22f_05e9_f243_f3e88633649d["write()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 8948913d_f22f_05e9_f243_f3e88633649d
  1c512398_5248_4a9b_5c8d_d055de785d37["writeBoolean()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 1c512398_5248_4a9b_5c8d_d055de785d37
  0e2bdedb_2789_c19b_24ec_e81108dac92f["writeByte()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 0e2bdedb_2789_c19b_24ec_e81108dac92f
  a7aede63_7efc_99b6_3c91_428c0daab5c3["writeBytes()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| a7aede63_7efc_99b6_3c91_428c0daab5c3
  1691042f_559f_627b_80ee_fd43cb3b6c22["writeChar()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 1691042f_559f_627b_80ee_fd43cb3b6c22
  4482b514_0a6d_2713_2535_9556c8d0066d["writeChars()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 4482b514_0a6d_2713_2535_9556c8d0066d
  25506d0e_8e9b_05b9_1833_7ee80aa62131["writeDouble()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 25506d0e_8e9b_05b9_1833_7ee80aa62131
  8d0bd6a4_626b_cca1_2674_aead0dfc7aa7["writeFloat()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 8d0bd6a4_626b_cca1_2674_aead0dfc7aa7
  e78acb35_6935_d23c_147f_c05f671071bc["writeInt()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| e78acb35_6935_d23c_147f_c05f671071bc
  207894ef_6591_a76b_7ede_29e06e452442["writeLong()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 207894ef_6591_a76b_7ede_29e06e452442
  973dd865_b405_694a_c6be_612cef92083a["writeShort()"]
  b0f015ed_c496_fa06_0ae3_0f347b86e7ca -->|method| 973dd865_b405_694a_c6be_612cef92083a

Relationship Graph

Source Code

buffer/src/main/java/io/netty/buffer/ByteBufOutputStream.java lines 38–188

public class ByteBufOutputStream extends OutputStream implements DataOutput {

    private final ByteBuf buffer;
    private final int startIndex;
    private DataOutputStream utf8out; // lazily-instantiated
    private boolean closed;
    private final boolean releaseOnClose;

    /**
     * Creates a new stream which writes data to the specified {@code buffer}.
     */
    public ByteBufOutputStream(ByteBuf buffer) {
        this(buffer, false);
    }

    /**
     * Creates a new stream which writes data to the specified {@code buffer}.
     *
     * @param buffer Writes data to the buffer for this {@link OutputStream}.
     * @param releaseOnClose {@code true} means that when {@link #close()} is called then {@link ByteBuf#release()} will
     *                       be called on {@code buffer}.
     */
    public ByteBufOutputStream(ByteBuf buffer, boolean releaseOnClose) {
        this.releaseOnClose = releaseOnClose;
        this.buffer = ObjectUtil.checkNotNull(buffer, "buffer");
        startIndex = buffer.writerIndex();
    }

    /**
     * Returns the number of written bytes by this stream so far.
     */
    public int writtenBytes() {
        return buffer.writerIndex() - startIndex;
    }

    @Override
    public void write(byte[] b, int off, int len) throws IOException {
        buffer.writeBytes(b, off, len);
    }

    @Override
    public void write(byte[] b) throws IOException {
        buffer.writeBytes(b);
    }

    @Override
    public void write(int b) throws IOException {
        buffer.writeByte(b);
    }

    @Override
    public void writeBoolean(boolean v) throws IOException {
        buffer.writeBoolean(v);
    }

    @Override
    public void writeByte(int v) throws IOException {
        buffer.writeByte(v);
    }

    @Override
    public void writeBytes(String s) throws IOException {
        // We don't use `ByteBuf.writeCharSequence` here, because `writeBytes` is specified to only write the
        // lower-order by of multibyte characters (exactly one byte per character in the string), while
        // `writeCharSequence` will instead write a '?' replacement character.
        int length = s.length();
        buffer.ensureWritable(length);
        int offset = buffer.writerIndex();
        for (int i = 0; i < length; i++) {
            buffer.setByte(offset + i, (byte) s.charAt(i));
        }
        buffer.writerIndex(offset + length);
    }

    @Override
    public void writeChar(int v) throws IOException {
        buffer.writeChar(v);
    }

    @Override
    public void writeChars(String s) throws IOException {

Frequently Asked Questions

What is the ByteBufOutputStream class?
ByteBufOutputStream is a class in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/ByteBufOutputStream.java.
Where is ByteBufOutputStream defined?
ByteBufOutputStream is defined in buffer/src/main/java/io/netty/buffer/ByteBufOutputStream.java at line 38.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free