com.fasterxml.jackson.databind.util.ByteBufferBackedInputStream.java Source code

Java tutorial

Introduction

Here is the source code for com.fasterxml.jackson.databind.util.ByteBufferBackedInputStream.java

Source

package com.fasterxml.jackson.databind.util;

import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;

/**
 * Simple {@link InputStream} implementation that exposes currently
 * available content of a {@link ByteBuffer}.
 */
public class ByteBufferBackedInputStream extends InputStream {
    protected final ByteBuffer _b;

    public ByteBufferBackedInputStream(ByteBuffer buf) {
        _b = buf;
    }

    @Override
    public int available() {
        return _b.remaining();
    }

    @Override
    public int read() throws IOException {
        return _b.hasRemaining() ? (_b.get() & 0xFF) : -1;
    }

    @Override
    public int read(byte[] bytes, int off, int len) throws IOException {
        if (!_b.hasRemaining())
            return -1;
        len = Math.min(len, _b.remaining());
        _b.get(bytes, off, len);
        return len;
    }
}