Interface OBinarySerializer<T>
- All Known Implementing Classes:
CompositeKeySerializer,EdgeKeySerializer,IntSerializer,MultiValueEntrySerializer,OBinaryTypeSerializer,OBooleanSerializer,OByteSerializer,OCharSerializer,OCompactedLinkSerializer,OCompositeKeySerializer,ODateSerializer,ODateTimeSerializer,ODecimalSerializer,ODoubleSerializer,OFloatSerializer,OIntegerSerializer,OLinkSerializer,OLongSerializer,OLuceneMockSpatialSerializer,OMixedIndexRIDContainerSerializer,ONullSerializer,OShortSerializer,OSimpleKeySerializer,OStreamSerializerRID,OStreamSerializerSBTreeIndexRIDContainer,OStringSerializer,OUTF8Serializer,OUUIDSerializer
public interface OBinarySerializer<T>
This interface is used for serializing OrientDB datatypes in binary format. Serialized content is
written into buffer that will contain not only given object presentation but all binary content.
Such approach prevents creation of separate byte array for each object and decreased GC overhead.
- Author:
- Evgeniy Degtiarenko (gmandnepr-at-gmail.com), Andrey Lomakin
-
Method Summary
Modifier and TypeMethodDescriptiondeserialize(byte[] stream, int startPosition) Reads object from the stream starting from the startPositionConverts binary presentation of object to object instance.deserializeFromByteBufferObject(ByteBuffer buffer, OWALChanges walChanges, int offset) Converts binary presentation of object to object instance taking in account changes which are done inside of atomic operationOAtomicOperation.deserializeNativeObject(byte[] stream, int startPosition) Reads object from the stream starting from the startPosition, in case there were serialized usingserializeNativeObject(T, byte[], int, Object...)method.intbytegetId()intgetObjectSize(byte[] stream, int startPosition) Return size serialized presentation of given object.intgetObjectSize(T object, Object... hints) Obtain size of the serialized object Size is the amount of bites that required for storing object (for example: for storing integer we need 4 bytes)intgetObjectSizeInByteBuffer(ByteBuffer buffer) Returns amount of bytes which is consumed by object which is already serialized in buffer.intgetObjectSizeInByteBuffer(ByteBuffer buffer, OWALChanges walChanges, int offset) Returns amount of bytes which is consumed by object which is already serialized in buffer taking in account changes which are done inside of atomic operationOAtomicOperation.intgetObjectSizeNative(byte[] stream, int startPosition) Return size serialized presentation of given object, if it was serialized usingserializeNativeObject(T, byte[], int, Object...)method.booleanpreprocess(T value, Object... hints) voidWrites object to the stream starting from the startPositionvoidserializeInByteBufferObject(T object, ByteBuffer buffer, Object... hints) Serializes binary presentation of object toByteBuffer.default byte[]serializeNativeAsWhole(T object, Object... hints) voidserializeNativeObject(T object, byte[] stream, int startPosition, Object... hints) Writes object to the stream starting from the startPosition using native acceleration.
-
Method Details
-
getObjectSize
Obtain size of the serialized object Size is the amount of bites that required for storing object (for example: for storing integer we need 4 bytes)- Parameters:
object- is the object to measure its sizehints- List of parameters which may be used to choose appropriate serialization approach.- Returns:
- size of the serialized object
-
getObjectSize
int getObjectSize(byte[] stream, int startPosition) Return size serialized presentation of given object.- Parameters:
stream- Serialized content.startPosition- Position from which serialized presentation of given object is stored.- Returns:
- Size serialized presentation of given object in bytes.
-
serialize
Writes object to the stream starting from the startPosition- Parameters:
object- is the object to serializestream- is the stream where object will be writtenhints- List of parameters which may be used to choose appropriate serialization approach.
-
deserialize
Reads object from the stream starting from the startPosition- Parameters:
stream- is the stream from object will be readstartPosition- is the position to start reading from- Returns:
- instance of the deserialized object
-
getId
byte getId()- Returns:
- Identifier of given serializer.
-
isFixedLength
boolean isFixedLength()- Returns:
trueif binary presentation of object always has the same length.
-
getFixedLength
int getFixedLength()- Returns:
- Length of serialized data if
isFixedLength()method returnstrue. IfisFixedLength()method returnfalsereturned value is undefined.
-
serializeNativeObject
Writes object to the stream starting from the startPosition using native acceleration. Serialized object presentation is platform dependant.- Parameters:
object- is the object to serializestream- is the stream where object will be writtenhints- List of parameters which may be used to choose appropriate serialization approach.
-
deserializeNativeObject
Reads object from the stream starting from the startPosition, in case there were serialized usingserializeNativeObject(T, byte[], int, Object...)method.- Parameters:
stream- is the stream from object will be readstartPosition- is the position to start reading from- Returns:
- instance of the deserialized object
-
getObjectSizeNative
int getObjectSizeNative(byte[] stream, int startPosition) Return size serialized presentation of given object, if it was serialized usingserializeNativeObject(T, byte[], int, Object...)method.- Parameters:
stream- Serialized content.startPosition- Position from which serialized presentation of given object is stored.- Returns:
- Size serialized presentation of given object in bytes.
-
preprocess
-
serializeInByteBufferObject
Serializes binary presentation of object toByteBuffer. Position of buffer should be set before calling of given method. Serialization result is compatible with result of call ofserializeNativeObject(Object, byte[], int, Object...)method. So if we call:buffer.position(10); binarySerializer.serializeInByteBufferObject(object, buffer);and thenbyte[] stream = new byte[serializedSize + 10]; buffer.position(10); buffer.get(stream);following assert should passassert object.equals(binarySerializer.deserializeNativeObject(stream, 10))Final position ofByteBufferwill be changed and will be equal to sum of buffer start position and value returned by methodgetObjectSize(Object, Object...)- Parameters:
object- Object to serialize.buffer- Buffer which will contain serialized presentation of buffer.hints- Type (types in case of composite object) of object.
-
deserializeFromByteBufferObject
Converts binary presentation of object to object instance. Position of buffer should be set before call of this method. Binary format of method is expected to be the same as binary format ofserializeNativeObject(Object, byte[], int, Object...)So if we callbyte[] stream = new byte[serializedSize]; binarySerializer.serializeNativeObject(object, stream, 0);following assert should passbyteBuffer.position(10); byteBuffer.put(stream); byteBuffer.position(10); assert object.equals(binarySerializer.deserializeFromByteBufferObject(buffer))Final position ofByteBufferwill be changed and will be equal to sum of buffer start position and value returned by methodgetObjectSize(Object, Object...)- Parameters:
buffer- Buffer which contains serialized presentation of object- Returns:
- Instance of object serialized in buffer.
-
getObjectSizeInByteBuffer
Returns amount of bytes which is consumed by object which is already serialized in buffer. Position of buffer should be set before call of this method. Result of call should be the same as result of call ofgetObjectSize(Object, Object...)on deserialized object.- Parameters:
buffer- Buffer which contains serialized version of object- Returns:
- Size of serialized object.
-
deserializeFromByteBufferObject
Converts binary presentation of object to object instance taking in account changes which are done inside of atomic operationOAtomicOperation. Binary format of method is expected to be the same as binary format of methodserializeNativeObject(Object, byte[], int, Object...). So if we call:byte[] stream = new byte[serializedSize]; binarySerializer.serializeNativeObject(object, stream, 0); walChanges.setBinaryValue(buffer, stream, 10);Then following assert should passassert object.equals(binarySerializer.deserializeFromByteBufferObject(buffer, walChanges, 10));- Parameters:
buffer- Buffer which will contain serialized changes.walChanges- Changes are done during atomic operation.offset- Offset of binary presentation of object inside of byte buffer/atomic operations changes.- Returns:
- Instance of object serialized in buffer.
-
getObjectSizeInByteBuffer
Returns amount of bytes which is consumed by object which is already serialized in buffer taking in account changes which are done inside of atomic operationOAtomicOperation. Result of call should be the same as result of call ofgetObjectSize(Object, Object...)on deserialized object.- Parameters:
buffer- Buffer which will contain serialized changes.walChanges- Changes are done during atomic operation.offset- Offset of binary presentation of object inside of byte buffer/atomic operations changes.- Returns:
- Size of serialized object.
-
serializeNativeAsWhole
-