|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.avro.io.Encoder org.apache.avro.io.BinaryEncoder
public class BinaryEncoder
Low-level support for serializing Avro values.
This class has two types of methods. One type of methods support
the writing of leaf values (for example, writeLong(long)
and
writeString(org.apache.avro.util.Utf8)
). These methods have analogs in Decoder
.
The other type of methods support the writing of maps and arrays.
These methods are writeArrayStart()
, startItem()
, and writeArrayEnd()
(and similar methods for
maps). Some implementations of Encoder
handle the
buffering required to break large maps and arrays into blocks,
which is necessary for applications that want to do streaming.
(See writeArrayStart()
for details on these methods.)
Decoder
Field Summary | |
---|---|
protected OutputStream |
out
|
Constructor Summary | |
---|---|
BinaryEncoder(OutputStream out)
Create a writer that sends its output to the underlying stream out . |
Method Summary | |
---|---|
protected static int |
encodeDouble(double d,
byte[] b,
int pos)
|
protected static void |
encodeDouble(double d,
OutputStream o)
|
protected static int |
encodeFloat(float f,
byte[] b,
int pos)
|
protected static void |
encodeFloat(float f,
OutputStream o)
|
protected static int |
encodeLong(long n,
byte[] b,
int pos)
|
protected static void |
encodeLong(long n,
OutputStream o)
|
void |
flush()
|
void |
init(OutputStream out)
Redirect output (and reset the parser state if we're checking). |
void |
setItemCount(long itemCount)
Call this method before writing a batch of items in an array or a map. |
void |
startItem()
Start a new item of an array or map. |
void |
writeArrayEnd()
Call this method to finish writing an array. |
void |
writeArrayStart()
Call this method to start writing an array. |
void |
writeBoolean(boolean b)
Write a boolean value. |
void |
writeBytes(byte[] bytes,
int start,
int len)
Write a byte string. |
void |
writeBytes(ByteBuffer bytes)
Write a byte string. |
void |
writeDouble(double d)
Write a double. |
void |
writeEnum(int e)
Writes an enumeration. |
void |
writeFixed(byte[] bytes,
int start,
int len)
Writes a fixed size binary object. |
void |
writeFloat(float f)
Write a float. |
void |
writeIndex(int unionIndex)
Call this method to write the tag of a union. |
void |
writeInt(int n)
Writes a 32-bit integer. |
void |
writeLong(long n)
Write a 64-bit integer. |
void |
writeMapEnd()
Call this method to terminate the inner-most, currently-opened map. |
void |
writeMapStart()
Call this to start a new map. |
void |
writeNull()
"Writes" a null value. |
void |
writeString(String string)
Write a Unicode character string. |
void |
writeString(Utf8 utf8)
Write a Unicode character string. |
Methods inherited from class org.apache.avro.io.Encoder |
---|
writeBytes, writeFixed, writeString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected OutputStream out
Constructor Detail |
---|
public BinaryEncoder(OutputStream out)
out
.
Method Detail |
---|
public void init(OutputStream out) throws IOException
Encoder
init
in class Encoder
IOException
public void flush() throws IOException
IOException
public void writeNull() throws IOException
Encoder
writeNull
in class Encoder
IOException
public void writeBoolean(boolean b) throws IOException
Encoder
writeBoolean
in class Encoder
IOException
public void writeInt(int n) throws IOException
Encoder
writeInt
in class Encoder
IOException
public void writeLong(long n) throws IOException
Encoder
writeLong
in class Encoder
IOException
public void writeFloat(float f) throws IOException
Encoder
writeFloat
in class Encoder
IOException
public void writeDouble(double d) throws IOException
Encoder
writeDouble
in class Encoder
IOException
public void writeString(Utf8 utf8) throws IOException
Encoder
writeString
in class Encoder
IOException
public void writeString(String string) throws IOException
Encoder
Utf8
. Some Encoder
implementations may want to do something different as a performance optimization.
writeString
in class Encoder
IOException
public void writeBytes(ByteBuffer bytes) throws IOException
Encoder
writeBytes
in class Encoder
IOException
public void writeBytes(byte[] bytes, int start, int len) throws IOException
Encoder
writeBytes
in class Encoder
IOException
public void writeFixed(byte[] bytes, int start, int len) throws IOException
Encoder
writeFixed
in class Encoder
bytes
- The contents to writestart
- The position within bytes where the contents
start.len
- The number of bytes to write.
IOException
public void writeEnum(int e) throws IOException
Encoder
writeEnum
in class Encoder
IOException
public void writeArrayStart() throws IOException
Encoder
Encoder.writeArrayStart()
. Then, before writing any data for any item
call Encoder.setItemCount(long)
followed by a sequence of
Encoder.startItem()
and the item itself. The number of
Encoder.startItem()
should match the number specified in
Encoder.setItemCount(long)
.
When actually writing the data of the item, you can call any Encoder
method (e.g., Encoder.writeLong(long)
). When all items
of the array have been written, call Encoder.writeArrayEnd()
.
As an example, let's say you want to write an array of records,
the record consisting of an Long field and a Boolean field.
Your code would look something like this:
out.writeArrayStart(); out.setItemCount(list.size()); for (Record r : list) { out.startItem(); out.writeLong(r.longField); out.writeBoolean(r.boolField); } out.writeArrayEnd();
writeArrayStart
in class Encoder
IOException
public void setItemCount(long itemCount) throws IOException
Encoder
Encoder.startItem()
followed by any of the
other write methods of Encoder
. The number of calls
to Encoder.startItem()
must be equal to the count specified
in Encoder.setItemCount(long)
. Once a batch is completed you
can start another batch with Encoder.setItemCount(long)
.
setItemCount
in class Encoder
itemCount
- The number of Encoder.startItem()
calls to follow.
IOException
public void startItem() throws IOException
Encoder
Encoder.writeArrayStart()
for usage information.
startItem
in class Encoder
IOException
public void writeArrayEnd() throws IOException
Encoder
Encoder.writeArrayStart()
for usage information.
writeArrayEnd
in class Encoder
IOException
public void writeMapStart() throws IOException
Encoder
Encoder.writeArrayStart()
for details on usage.
As an example of usage, let's say you want to write a map of
records, the record consisting of an Long field and a Boolean
field. Your code would look something like this:
out.writeMapStart(); out.setItemCount(list.size()); for (Map.Entryentry : map.entrySet()) { out.startItem(); out.writeString(entry.getKey()); out.writeLong(entry.getValue().longField); out.writeBoolean(entry.getValue().boolField); } out.writeMapEnd();
writeMapStart
in class Encoder
IOException
public void writeMapEnd() throws IOException
Encoder
Encoder.writeArrayStart()
for more details.
writeMapEnd
in class Encoder
IOException
public void writeIndex(int unionIndex) throws IOException
Encoder
out.writeIndex(1); out.writeLong(record.longField); out.writeBoolean(record.boolField);
writeIndex
in class Encoder
IOException
protected static void encodeLong(long n, OutputStream o) throws IOException
IOException
protected static int encodeLong(long n, byte[] b, int pos)
protected static void encodeFloat(float f, OutputStream o) throws IOException
IOException
protected static int encodeFloat(float f, byte[] b, int pos)
protected static void encodeDouble(double d, OutputStream o) throws IOException
IOException
protected static int encodeDouble(double d, byte[] b, int pos)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |