1 package org.apache.commons.jcs3.engine.behavior; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import java.io.Serializable; 23 24 /** 25 * This defines the minimal behavior for the Cache Configuration settings. 26 */ 27 public interface ICompositeCacheAttributes 28 extends Serializable, Cloneable 29 { 30 enum DiskUsagePattern 31 { 32 /** Items will only go to disk when the memory limit is reached. This is the default. */ 33 SWAP, 34 35 /** 36 * Items will go to disk on a normal put. If The disk usage pattern is UPDATE, the swap will be 37 * disabled. 38 */ 39 UPDATE 40 } 41 42 /** 43 * SetMaxObjects is used to set the attribute to determine the maximum 44 * number of objects allowed in the memory cache. If the max number of 45 * objects or the cache size is set, the default for the one not set is 46 * ignored. If both are set, both are used to determine the capacity of the 47 * cache, i.e., object will be removed from the cache if either limit is 48 * reached. TODO: move to MemoryCache config file. 49 * <p> 50 * @param size 51 * The new maxObjects value 52 */ 53 void setMaxObjects( int size ); 54 55 /** 56 * Gets the maxObjects attribute of the ICompositeCacheAttributes object 57 * <p> 58 * @return The maxObjects value 59 */ 60 int getMaxObjects(); 61 62 /** 63 * Sets the useDisk attribute of the ICompositeCacheAttributes object 64 * <p> 65 * @param useDisk 66 * The new useDisk value 67 */ 68 void setUseDisk( boolean useDisk ); 69 70 /** 71 * Gets the useDisk attribute of the ICompositeCacheAttributes object 72 * <p> 73 * @return The useDisk value 74 */ 75 boolean isUseDisk(); 76 77 /** 78 * set whether the cache should use a lateral cache 79 * <p> 80 * @param d 81 * The new useLateral value 82 */ 83 void setUseLateral( boolean d ); 84 85 /** 86 * Gets the useLateral attribute of the ICompositeCacheAttributes object 87 * <p> 88 * @return The useLateral value 89 */ 90 boolean isUseLateral(); 91 92 /** 93 * Sets whether the cache is remote enabled 94 * <p> 95 * @param isRemote 96 * The new useRemote value 97 */ 98 void setUseRemote( boolean isRemote ); 99 100 /** 101 * returns whether the cache is remote enabled 102 * <p> 103 * @return The useRemote value 104 */ 105 boolean isUseRemote(); 106 107 /** 108 * Sets the name of the cache, referenced by the appropriate manager. 109 * <p> 110 * @param s 111 * The new cacheName value 112 */ 113 void setCacheName( String s ); 114 115 /** 116 * Gets the cacheName attribute of the ICompositeCacheAttributes object 117 * <p> 118 * @return The cacheName value 119 */ 120 String getCacheName(); 121 122 /** 123 * Sets the name of the MemoryCache, referenced by the appropriate manager. 124 * TODO: create a separate memory cache attribute class. 125 * <p> 126 * @param s 127 * The new memoryCacheName value 128 */ 129 void setMemoryCacheName( String s ); 130 131 /** 132 * Gets the memoryCacheName attribute of the ICompositeCacheAttributes 133 * object 134 * <p> 135 * @return The memoryCacheName value 136 */ 137 String getMemoryCacheName(); 138 139 /** 140 * Whether the memory cache should perform background memory shrinkage. 141 * <p> 142 * @param useShrinker 143 * The new UseMemoryShrinker value 144 */ 145 void setUseMemoryShrinker( boolean useShrinker ); 146 147 /** 148 * Whether the memory cache should perform background memory shrinkage. 149 * <p> 150 * @return The UseMemoryShrinker value 151 */ 152 boolean isUseMemoryShrinker(); 153 154 /** 155 * If UseMemoryShrinker is true the memory cache should auto-expire elements 156 * to reclaim space. 157 * <p> 158 * @param seconds 159 * The new MaxMemoryIdleTimeSeconds value 160 */ 161 void setMaxMemoryIdleTimeSeconds( long seconds ); 162 163 /** 164 * If UseMemoryShrinker is true the memory cache should auto-expire elements 165 * to reclaim space. 166 * <p> 167 * @return The MaxMemoryIdleTimeSeconds value 168 */ 169 long getMaxMemoryIdleTimeSeconds(); 170 171 /** 172 * If UseMemoryShrinker is true the memory cache should auto-expire elements 173 * to reclaim space. This sets the shrinker interval. 174 * <p> 175 * @param seconds 176 * The new ShrinkerIntervalSeconds value 177 */ 178 void setShrinkerIntervalSeconds( long seconds ); 179 180 /** 181 * If UseMemoryShrinker is true the memory cache should auto-expire elements 182 * to reclaim space. This gets the shrinker interval. 183 * <p> 184 * @return The ShrinkerIntervalSeconds value 185 */ 186 long getShrinkerIntervalSeconds(); 187 188 /** 189 * If UseMemoryShrinker is true the memory cache should auto-expire elements 190 * to reclaim space. This sets the maximum number of items to spool per run. 191 * <p> 192 * @param maxSpoolPerRun 193 * The new maxSpoolPerRun value 194 */ 195 void setMaxSpoolPerRun( int maxSpoolPerRun ); 196 197 /** 198 * If UseMemoryShrinker is true the memory cache should auto-expire elements 199 * to reclaim space. This gets the maximum number of items to spool per run. 200 * <p> 201 * @return The maxSpoolPerRun value 202 */ 203 int getMaxSpoolPerRun(); 204 205 /** 206 * By default this is SWAP_ONLY. 207 * <p> 208 * @param diskUsagePattern The diskUsagePattern to set. 209 */ 210 void setDiskUsagePattern( DiskUsagePattern diskUsagePattern ); 211 212 /** 213 * Translates the name to the disk usage pattern short value. 214 * <p> 215 * The allowed values are SWAP and UPDATE. 216 * <p> 217 * @param diskUsagePatternName The diskUsagePattern to set. 218 */ 219 void setDiskUsagePatternName( String diskUsagePatternName ); 220 221 /** 222 * @return Returns the diskUsagePattern. 223 */ 224 DiskUsagePattern getDiskUsagePattern(); 225 226 /** 227 * Number to send to disk at time when memory is full. 228 * <p> 229 * @return int 230 */ 231 int getSpoolChunkSize(); 232 233 /** 234 * Number to send to disk at a time. 235 * <p> 236 * @param spoolChunkSize 237 */ 238 void setSpoolChunkSize( int spoolChunkSize ); 239 240 /** 241 * Clone object 242 */ 243 ICompositeCacheAttributes clone(); 244 }