Package org.elasticsearch.common.bytes
Class RecyclingBytesStreamOutput
java.lang.Object
java.io.OutputStream
org.elasticsearch.common.io.stream.StreamOutput
org.elasticsearch.common.io.stream.BytesStream
org.elasticsearch.common.bytes.RecyclingBytesStreamOutput
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
An in-memory
StreamOutput
which first fills the given byte[]
and then allocates more space from the given
BigArrays
if needed. The idea is that you can use this for passing data to an API that requires a single byte[]
(or a
BytesRef
) which you'd prefer to re-use if possible, avoiding excessive allocations, but which may not
always be large enough.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbytes()
void
close()
Closes this stream to further operations.void
flush()
Forces any buffered output to be written.void
reset()
org.apache.lucene.util.BytesRef
Return the written bytes in aBytesRef
, avoiding allocating a newbyte[]
if the original buffer was already large enough.void
writeByte(byte b)
Writes a single byte.void
writeBytes(byte[] b, int offset, int length)
Writes an array of bytes.Methods inherited from class org.elasticsearch.common.io.stream.StreamOutput
checkWriteable, getFeatures, getVersion, hasFeature, position, seek, setFeatures, setVersion, write, write, writeArray, writeArray, writeBoolean, writeByteArray, writeBytes, writeBytes, writeBytesRef, writeBytesReference, writeCollection, writeCollection, writeDouble, writeDoubleArray, writeEnum, writeEnumSet, writeException, writeFloat, writeFloatArray, writeGenericValue, writeGeoPoint, writeInstant, writeInt, writeIntArray, writeList, writeLong, writeLongArray, writeMap, writeMap, writeMap, writeMap, writeMapOfLists, writeMapWithConsistentOrder, writeNamedWriteable, writeNamedWriteableList, writeOptionalArray, writeOptionalArray, writeOptionalBoolean, writeOptionalBytesReference, writeOptionalDouble, writeOptionalEnum, writeOptionalFloat, writeOptionalInstant, writeOptionalInt, writeOptionalLong, writeOptionalNamedWriteable, writeOptionalSecureString, writeOptionalString, writeOptionalStringArray, writeOptionalStringCollection, writeOptionalText, writeOptionalTimeValue, writeOptionalTimeZone, writeOptionalVInt, writeOptionalVLong, writeOptionalWriteable, writeOptionalZoneId, writeSecureString, writeShort, writeString, writeStringArray, writeStringArrayNullable, writeStringCollection, writeText, writeTimeValue, writeTimeZone, writeVInt, writeVIntArray, writeVLong, writeVLongArray, writeZLong, writeZoneId
Methods inherited from class java.io.OutputStream
nullOutputStream, write
-
Constructor Details
-
RecyclingBytesStreamOutput
-
-
Method Details
-
writeByte
public void writeByte(byte b)Description copied from class:StreamOutput
Writes a single byte.- Specified by:
writeByte
in classStreamOutput
-
writeBytes
public void writeBytes(byte[] b, int offset, int length)Description copied from class:StreamOutput
Writes an array of bytes.- Specified by:
writeBytes
in classStreamOutput
- Parameters:
b
- the bytes to writeoffset
- the offset in the byte arraylength
- the number of bytes to write
-
flush
public void flush()Description copied from class:StreamOutput
Forces any buffered output to be written.- Specified by:
flush
in interfaceFlushable
- Specified by:
flush
in classStreamOutput
-
close
Description copied from class:StreamOutput
Closes this stream to further operations.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classStreamOutput
- Throws:
IOException
-
reset
- Specified by:
reset
in classStreamOutput
- Throws:
IOException
-
toBytesRef
public org.apache.lucene.util.BytesRef toBytesRef()Return the written bytes in aBytesRef
, avoiding allocating a newbyte[]
if the original buffer was already large enough. If we allocate a new (larger) buffer here then callers should typically re-use it for subsequent streams. -
bytes
- Specified by:
bytes
in classBytesStream
-