1 package com.trendmicro.grid.acl.ds.cache; 2 3 import java.util.Collection; 4 import java.util.Map; 5 6 /** 7 * Defines the interface to communicate with a cache destination (used to store elements in a cache). 8 * 9 * @author juergen_kellerer, 2011-03-25 10 * @version 1.0 11 */ 12 public interface CacheDestination<K, V> { 13 14 /** 15 * Defines the mode of operation for cache writes. 16 */ 17 enum Mode { 18 /** 19 * Write cache entry in any case. 20 */ 21 Put, 22 /** 23 * Write cache entry if no value exists yet. 24 */ 25 PutIfAbsent, 26 /** 27 * Replace cached entry if the value differs. 28 */ 29 PutIfValueDiffers, 30 /** 31 * Replace cached entry if it existed before. 32 */ 33 ReplaceValue 34 } 35 36 /** 37 * Cache all key value pairs, using the given mode. 38 * 39 * @param values the key and value pairs to cache. 40 * @param mode the mode instructing how to apply the values with the cache. 41 */ 42 void putAll(Map<? extends K, ? extends V> values, Mode mode); 43 44 /** 45 * Removes all values for the given keys. 46 * 47 * @param keys the keys of the values to remove. 48 */ 49 void removeAll(Collection<K> keys); 50 51 /** 52 * Clears the destination. 53 */ 54 void clear(); 55 56 /** 57 * Returns true if batching is supported. 58 * 59 * @return true if batching is supported. 60 */ 61 boolean supportsBatching(); 62 63 /** 64 * Starts a new batch operation. 65 * 66 * @return true if a batch could be opened. 67 */ 68 boolean startBatch(); 69 70 /** 71 * Ends a batch operation. 72 * 73 * @param success if true, the batch completes, otherwise the batch is aborted and changes are not committed. 74 */ 75 void endBatch(boolean success); 76 }