org.bson.io.BasicOutputBuffer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mongo-java-driver Show documentation
Show all versions of mongo-java-driver Show documentation
The MongoDB Java Driver uber-artifact, containing mongodb-driver, mongodb-driver-core, and bson
/*
* Copyright (c) 2008-2014 MongoDB, Inc.
*
* Licensed 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 org.bson.io;
import java.io.DataOutput;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
/**
* A BSON output stream that stores the output in a single, un-pooled byte array.
*/
public class BasicOutputBuffer extends OutputBuffer {
@Override
public void write(byte[] b){
write( b , 0 , b.length );
}
@Override
public void write(byte[] b, int off, int len){
_ensure( len );
System.arraycopy( b , off , _buffer , _cur , len );
_cur += len;
_size = Math.max( _cur , _size );
}
@Override
public void write(int b){
_ensure(1);
_buffer[_cur++] = (byte)(0xFF&b);
_size = Math.max( _cur , _size );
}
@Override
public int getPosition(){
return _cur;
}
/**
* @deprecated This method is NOT a part of public API and will be dropped in 3.x versions.
*/
@Override
@Deprecated
public void setPosition( int position ){
_cur = position;
}
/**
* @deprecated This method is NOT a part of public API and will be dropped in 3.x versions.
*/
@Override
@Deprecated
public void seekEnd(){
_cur = _size;
}
/**
* @deprecated This method is NOT a part of public API and will be dropped in 3.x versions.
*/
@Deprecated
@Override
public void seekStart(){
_cur = 0;
}
@Override
public int size(){
return _size;
}
@Override
public int pipe(OutputStream out)
throws IOException {
out.write( _buffer , 0 , _size );
return _size;
}
/**
* Pipe the contents of this output buffer into the given {@code DataOutput}
*
* @param out the {@code DataOutput} to pipe to
* @return number of bytes written to the stream
* @throws java.io.IOException if the stream throws an exception
*/
@Deprecated
public int pipe(DataOutput out)
throws IOException {
out.write( _buffer , 0 , _size );
return _size;
}
void _ensure( int more ){
final int need = _cur + more;
if ( need < _buffer.length )
return;
int newSize = _buffer.length*2;
if ( newSize <= need )
newSize = need + 128;
byte[] n = new byte[newSize];
System.arraycopy( _buffer , 0 , n , 0 , _size );
_buffer = n;
}
/**
* @deprecated This method is NOT a part of public API and will be dropped in 3.x versions.
*/
@Override
@Deprecated
public String asString(){
return new String( _buffer , 0 , _size );
}
/**
* @deprecated This method is NOT a part of public API and will be dropped in 3.x versions.
*/
@Override
@Deprecated
public String asString( String encoding )
throws UnsupportedEncodingException {
return new String( _buffer , 0 , _size , encoding );
}
private int _cur;
private int _size;
private byte[] _buffer = new byte[512];
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy