/** * Synchronously reads from the lateral cache. * <p> * @param key * @return ICacheElement */ @Override public ICacheElement<K, V> get( K key ) { for ( int i = 0; i < noWaits.length; i++ ) { try { ICacheElement<K, V> obj = noWaits[i].get( key ); if ( obj != null ) { // TODO: return after first success // could do this simultaneously // serious blocking risk here return obj; } } catch ( Exception ex ) { log.error( "Failed to get", ex ); } } return null; }
/** * Synchronously reads from the lateral cache. * <p> * @param key * @return ICacheElement */ @Override public ICacheElement<K, V> get( K key ) { for ( int i = 0; i < noWaits.length; i++ ) { try { ICacheElement<K, V> obj = noWaits[i].get( key ); if ( obj != null ) { // TODO: return after first success // could do this simultaneously // serious blocking risk here return obj; } } catch ( Exception ex ) { log.error( "Failed to get", ex ); } } return null; }
/** * Gets multiple items from the cache based on the given set of keys. * <p> * @param keys * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no * data in cache for any of these keys */ @Override public Map<K, ICacheElement<K, V>> getMultiple(Set<K> keys) { Map<K, ICacheElement<K, V>> elements = new HashMap<K, ICacheElement<K, V>>(); if ( keys != null && !keys.isEmpty() ) { for (K key : keys) { ICacheElement<K, V> element = get( key ); if ( element != null ) { elements.put( key, element ); } } } return elements; }
/** * Gets multiple items from the cache based on the given set of keys. * <p> * @param keys * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no * data in cache for any of these keys */ @Override public Map<K, ICacheElement<K, V>> getMultiple(Set<K> keys) { Map<K, ICacheElement<K, V>> elements = new HashMap<K, ICacheElement<K, V>>(); if ( keys != null && !keys.isEmpty() ) { for (K key : keys) { ICacheElement<K, V> element = get( key ); if ( element != null ) { elements.put( key, element ); } } } return elements; }