/*
* 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.core;
import java.util.Map;
import org.ehcache.UserManagedCache;
import org.ehcache.core.spi.LifeCycled;
import org.ehcache.spi.loaderwriter.CacheLoaderWriter;
import org.ehcache.core.statistics.BulkOps;
import org.terracotta.statistics.jsr166e.LongAdder;
/**
* Extension of the {@link org.ehcache.Cache} and {@link UserManagedCache} interfaces defining common methods used by
* collaborators of {@link org.ehcache.Cache} implementations.
* <p>
* {@code Ehcache} users should not have to depend on this type but rely exclusively on the api types in package
* {@code org.ehcache}.
*/
public interface InternalCache<K, V> extends UserManagedCache<K, V> {
/**
* BulkMethodEntries
*
* @return BulkMethodEntries
*/
Map<BulkOps, LongAdder> getBulkMethodEntries();
/**
* Jsr107Cache
*
* @return Jsr107Cache
*/
Jsr107Cache<K, V> getJsr107Cache();
/**
* CacheLoaderWriter
*
* @return CacheLoaderWriter
*/
CacheLoaderWriter<? super K, V> getCacheLoaderWriter();
/**
* Add lifecycle hooks
*
* @param hook hook it to lifecycle
*/
void addHook(LifeCycled hook);
}