001package org.cache2k.storage;
002
003/*
004 * #%L
005 * cache2k core package
006 * %%
007 * Copyright (C) 2000 - 2015 headissue GmbH, Munich
008 * %%
009 * This program is free software: you can redistribute it and/or modify
010 * it under the terms of the GNU General Public License as
011 * published by the Free Software Foundation, either version 3 of the 
012 * License, or (at your option) any later version.
013 * 
014 * This program is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 * 
019 * You should have received a copy of the GNU General Public 
020 * License along with this program.  If not, see
021 * <http://www.gnu.org/licenses/gpl-3.0.html>.
022 * #L%
023 */
024
025import org.cache2k.impl.util.Log;
026
027import java.util.Properties;
028
029/**
030 * Expose the needed information and interactions with a cache
031 * to a cache storage.
032 *
033 * @author Jens Wilke; created: 2014-04-19
034 */
035public interface CacheStorageContext {
036
037  Log getLog();
038
039  Properties getProperties();
040
041  String getManagerName();
042
043  String getCacheName();
044
045  /**
046   * Type of the cache key. The storage can use this information to optimize its
047   * operation or completely ignore it.
048   */
049  Class<?> getKeyType();
050
051  /**
052   * Type of the cache value. The storage can use this information to optimize its
053   * operation or completely ignore it.
054   */
055  Class<?> getValueType();
056
057  /**
058   * A marshaller factory the storage may use.
059   *
060   */
061  MarshallerFactory getMarshallerFactory();
062
063  void requestMaintenanceCall(int _intervalMillis);
064
065  void notifyEvicted(StorageEntry e);
066
067  void notifyExpired(StorageEntry e);
068
069}