- java.lang.Object
-
- com.aoapps.persistence.BufferedSerializer<E>
-
- All Implemented Interfaces:
Serializer<E>
- Direct Known Subclasses:
ObjectSerializer
public abstract class BufferedSerializer<E> extends Object implements Serializer<E>
Serializes any objects by using a buffer between theSerializer.getSerializedSize(java.lang.Object)
andSerializer.serialize(java.lang.Object, java.io.OutputStream)
calls. This avoids serializing the object twice in the common sequence of getSerializedSize followed by serialize. This and all subclasses are not fixed size.This class is not thread safe.
- Author:
- AO Industries, Inc.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
BufferedSerializer()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description long
getSerializedSize(E value)
Determines the size of the object after serialization.boolean
isFixedSerializedSize()
If a serializer always creates the same number of bytes, containers can choose a fixed-size block for higher performance.protected abstract void
serialize(E value, ByteArrayOutputStream buffer)
void
serialize(E value, OutputStream out)
Writes the object to theOutputStream
.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.aoapps.persistence.Serializer
deserialize
-
-
-
-
Method Detail
-
isFixedSerializedSize
public final boolean isFixedSerializedSize()
Description copied from interface:Serializer
If a serializer always creates the same number of bytes, containers can choose a fixed-size block for higher performance. If this method returnstrue
,Serializer.getSerializedSize(java.lang.Object)
must return the same value for every access, it may be accessed with anull
parameter, and it may be accessed less than once per serialized object.- Specified by:
isFixedSerializedSize
in interfaceSerializer<E>
- Returns:
- To indicate that the same number of bytes will be created, return
true
. Otherwise, there may be a dynamic number of bytes and returnfalse
.
-
getSerializedSize
public final long getSerializedSize(E value) throws IOException
Description copied from interface:Serializer
Determines the size of the object after serialization. This allows some optimizations avoiding unnecessary copying of data.
The common pattern is:- Get size from
Serializer.getSerializedSize(java.lang.Object)
- Allocate appropriate space
- Write serialized object with
Serializer.serialize(java.lang.Object, java.io.OutputStream)
Serializer.getSerializedSize(java.lang.Object)
andSerializer.serialize(java.lang.Object, java.io.OutputStream)
when it can reduce processing time.- Specified by:
getSerializedSize
in interfaceSerializer<E>
- Returns:
- the exact number of bytes the object will take to serialize
- Throws:
IOException
- Get size from
-
serialize
public final void serialize(E value, OutputStream out) throws IOException
Description copied from interface:Serializer
Writes the object to theOutputStream
.null
will not be passed in.- Specified by:
serialize
in interfaceSerializer<E>
- Throws:
IOException
-
serialize
protected abstract void serialize(E value, ByteArrayOutputStream buffer) throws IOException
- Throws:
IOException
-
-