All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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 getJavaClass();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy