/* * Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved. * * 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 com.hazelcast.internal.serialization; import com.hazelcast.nio.BufferObjectDataInput; import com.hazelcast.nio.BufferObjectDataOutput; import com.hazelcast.nio.Disposable; import com.hazelcast.nio.ObjectDataInput; import com.hazelcast.nio.ObjectDataOutput; import com.hazelcast.nio.serialization.Data; import com.hazelcast.nio.serialization.PortableReader; import com.hazelcast.spi.serialization.SerializationService; import java.io.IOException; import java.nio.ByteOrder; public interface InternalSerializationService extends SerializationService, Disposable { byte VERSION_1 = 1; /** * Writes the obj to a byte array. This call is exactly the same as calling {@link #toData(Object)} and * then calling {@link Data#toByteArray()}. But it doesn't force a HeapData object being created. */ byte[] toBytes(Object obj); /** * Writes an object to a byte-array. * * It allows for configurable padding on the left. * * The padded bytes are not zero'd out since they will be written by the caller. Zero'ing them out would be waste of * time. * * If you want to convert an object to a Data (or its byte representation) then you want to have the partition hash, because * that is part of the Data-definition. * * But if you want to serialize an object to a byte-array and don't care for the Data partition-hash, the hash can be * disabled. */ byte[] toBytes(Object obj, int leftPadding, boolean insertPartitionHash); void writeObject(ObjectDataOutput out, Object obj); <T> T readObject(ObjectDataInput in); <T> T readObject(ObjectDataInput in, Class aClass); void disposeData(Data data); BufferObjectDataInput createObjectDataInput(byte[] data); BufferObjectDataInput createObjectDataInput(Data data); BufferObjectDataOutput createObjectDataOutput(int size); BufferObjectDataOutput createObjectDataOutput(); PortableReader createPortableReader(Data data) throws IOException; PortableContext getPortableContext(); ClassLoader getClassLoader(); ByteOrder getByteOrder(); byte getVersion(); }