view src/org/eclipse/jetty/io/JBuffer.java @ 1069:7dd6ec499000

fix use of HttpGenerator._content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 10 Nov 2016 00:42:51 -0700
parents bbbda7c6e8ec
children b4ba8a4d5a16
line wrap: on
line source

// tmp class to implement Buffer until I can get rid of it

package org.eclipse.jetty.io;

import java.io.InputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.eclipse.jetty.util.TypeUtil;


public final class JBuffer {
	private static final Logger LOG = LoggerFactory.getLogger(JBuffer.class);

	private final ByteBuffer bb;

	public JBuffer(ByteBuffer bb) {
		this.bb = bb;
	}

	public int position() {
		return bb.position();
	}

	public void position(int i) {
		bb.position(i);
	}

	public int limit() {
		return bb.limit();
	}

	public void limit(int i) {
		bb.limit(i);
	}

	public byte[] array() {
		return bb.array();
	}

	public boolean hasArray() {
		return bb.hasArray();
	}

	public JBuffer duplicate() {
		return new JBuffer(bb.duplicate());
	}

	public int remaining() {
		return bb.remaining();
	}

	public boolean isReadOnly() {
		return bb.isReadOnly();
	}

	public boolean hasRemaining() {
		return bb.hasRemaining();
	}

	public byte get() {
		return bb.get();
	}

	public void get(byte[] bytes) {
		bb.get(bytes);
	}

	public void compact() {
		bb.compact();
	}

	public int capacity() {
		return bb.capacity();
	}



	public ByteBuffer getByteBuffer() {
		return bb;
	}

	public void clear() {
		bb.clear();
	}

	public void clearJ() {
		bb.position(0);
		bb.limit(0);
	}

	public int space() {
		return bb.capacity() - bb.limit();
	}


	public void get(byte[] b, int offset, int length) {
		bb.get(b,offset,length);
	}


	public void putQ(JBuffer src) {
		bb.put(src.bb);
	}

	public int put(JBuffer src) {
		return put(src.asArray());
	}

	public void putQ(byte b) {
		bb.put(b);
	}

	public void put(byte b)
	{
		ByteBuffer dup = bb.duplicate();
		dup.position(bb.limit());
		dup.limit(bb.capacity());
		dup.put(b);
		bb.limit(bb.limit()+1);
	}

	private int put(byte[] b, int offset, int length) {
		ByteBuffer dup = bb.duplicate();
		int put = bb.limit();
		int capacity = bb.capacity();
		dup.position(put);
		dup.limit(capacity);
		if( length > capacity - put )
			length = capacity - put;
		dup.put(b,offset,length);
		bb.limit(put+length);
		return length;
	}

	public void putQ(byte[] b) {
		bb.put(b);
	}

	public int put(byte[] b) {
		return put(b,0,b.length);
	}

	public void skip(int n) {
		if (remaining() < n) n = remaining();
		bb.position(bb.position() + n);
	}

	private final byte[] asArray() {
		byte[] bytes = new byte[remaining()];
		bb.duplicate().get(bytes);
		return bytes;
	}
/*
	@Override
	public String toString() {
//		return toString("ISO-8859-1");
//		Thread.dumpStack();
		throw new RuntimeException("toString");
	}
*/

	public byte get(int index) {
		return bb.get(index);
	}

	public void flip() {
		bb.flip();
	}

}