org.wildfly.clustering.marshalling.protostream.Marshallable Maven / Gradle / Ivy
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.wildfly.clustering.marshalling.protostream;
import java.util.OptionalInt;
/**
* Interface inherited by marshallable components.
* @author Paul Ferraro
* @param the type of this marshaller
*/
public interface Marshallable extends Readable, Writable {
/**
* Computes the size of the specified object.
* @param operation the marshalling operation
* @param value the value whose size is to be calculated
* @return an optional buffer size, only present if the buffer size could be computed
*/
default OptionalInt size(ProtoStreamSizeOperation operation, T value) {
return operation.computeSize(this::writeTo, value);
}
/**
* Returns the type of object handled by this marshallable instance.
* @return the type of object handled by this marshallable instance.
*/
Class extends T> getJavaClass();
}