/*
* Copyright 2014 WANdisco
*
* WANdisco licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package c5db.util;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
/**
*
*/
public class ByteBufferOutputStream extends OutputStream {
protected ByteBuffer bb;
public ByteBufferOutputStream(int size) {
bb = ByteBuffer.allocate(size);
}
public ByteBufferOutputStream(ByteBuffer useMe) {
bb = useMe.duplicate();
}
@Override
public void write(int b) throws IOException {
bb.put((byte) b);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
bb.put(b, off, len);
}
/**
* Duplicate and flips the internal byte buffer
*
* @return a duplicate, and flipped byte buffer (ready for writing elsewhere)
*/
public ByteBuffer getByteBuffer() {
ByteBuffer copy = bb.duplicate();
copy.flip();
return copy; // all because flip has the wrong return type
}
public void reset() {
bb.rewind();
}
}