/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.indexes.serialization.spi;
import org.hibernate.search.engine.service.spi.Service;
/**
* Provides access to a serializer and deserializer to send the necessary work load for remote backends over the wire.
* <p>
* Note: Providers are encouraged to offer a backward and forward compatible protocol.
* </p>
* <p>
* Implementors are encouraged to implement a descriptive {@code toString()}
* method for logging purposes.
* </p>
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
*/
public interface SerializationProvider extends Service {
/**
* This method will be invoked when any thread needs a Serializer:
* implementors of this Service can return the same instance multiple
* times if the Serializer implementation is threadsafe.
* In all other cases return a new instance.
* An obtained Serializer should not be shared across threads.
* @return the initialized Serializer ready for usage
*/
Serializer getSerializer();
/**
* This method will be invoked when any thread needs a Deserializer:
* implementors of this Service can return the same instance multiple
* times if the Deserializer implementation is threadsafe.
* In all other cases return a new instance.
* An obtained Deserializer should not be shared across threads.
* @return the initialized Deserializer ready for usage
*/
Deserializer getDeserializer();
}