/* * Copyright Terracotta, Inc. * * 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 org.ehcache.clustered.client.internal.store; import org.ehcache.clustered.client.internal.service.ClusterTierException; import org.ehcache.clustered.common.internal.ServerStoreConfiguration; import org.ehcache.clustered.common.internal.exceptions.ClusterException; import org.ehcache.clustered.common.internal.messages.ClusterTierReconnectMessage; import org.ehcache.clustered.common.internal.messages.EhcacheEntityResponse; import org.ehcache.clustered.common.internal.messages.ServerStoreOpMessage; import org.ehcache.clustered.common.internal.messages.StateRepositoryOpMessage; import org.terracotta.connection.entity.Entity; import org.terracotta.entity.MessageCodecException; import java.util.UUID; import java.util.concurrent.TimeoutException; /** * ClusterTierClientEntity */ public interface ClusterTierClientEntity extends Entity { UUID getClientId(); boolean isConnected(); void validate(ServerStoreConfiguration clientStoreConfiguration) throws ClusterTierException, TimeoutException; EhcacheEntityResponse invokeServerStoreOperation(ServerStoreOpMessage message, boolean track) throws ClusterException, TimeoutException; void invokeServerStoreOperationAsync(ServerStoreOpMessage message, boolean track) throws MessageCodecException; EhcacheEntityResponse invokeStateRepositoryOperation(StateRepositoryOpMessage message, boolean track) throws ClusterException, TimeoutException; <T extends EhcacheEntityResponse> void addResponseListener(Class<T> responseType, ResponseListener<T> responseListener); void setDisconnectionListener(DisconnectionListener disconnectionListener); void setReconnectListener(ReconnectListener reconnectListener); interface ResponseListener<T extends EhcacheEntityResponse> { void onResponse(T response); } interface DisconnectionListener { void onDisconnection(); } interface ReconnectListener { void onHandleReconnect(ClusterTierReconnectMessage reconnectMessage); } }