/** * This is used by the event logging. * <p> * * @return the location of the disk, either path or ip. */ @Override protected String getDiskLocation() { return dataFile.getFilePath(); }
ICacheElement<K, V> readObject = dataFile.readObject(ded); object = readObject;
/** * Saves key file to disk. This converts the LRUMap to a HashMap for deserialization. */ protected void saveKeys() { try { if (log.isInfoEnabled()) { log.info(logCacheName + "Saving keys to: " + fileName + ", key count: " + keyHash.size()); } keyFile.reset(); HashMap<K, IndexedDiskElementDescriptor> keys = new HashMap<K, IndexedDiskElementDescriptor>(); keys.putAll(keyHash); if (keys.size() > 0) { keyFile.writeObject(keys, 0); } if (log.isInfoEnabled()) { log.info(logCacheName + "Finished saving keys."); } } catch (IOException e) { log.error(logCacheName + "Problem storing keys.", e); } }
this.dataFile = new IndexedDisk(new File(rafDir, fileName + ".data"), getElementSerializer()); this.keyFile = new IndexedDisk(new File(rafDir, fileName + ".key"), getElementSerializer()); else if (keyFile.length() > 0)
HashMap<K, IndexedDiskElementDescriptor> keys = keyFile.readObject( new IndexedDiskElementDescriptor(0, (int) keyFile.length() - IndexedDisk.HEADER_SIZE_BYTES));
dataFile.close(); keyFile.close(); dataFile = new IndexedDisk(new File(rafDir, fileName + ".data"), getElementSerializer()); keyFile = new IndexedDisk(new File(rafDir, fileName + ".key"), getElementSerializer());
/** * This is for debugging and testing. * <p> * * @return the length of the data file. * @throws IOException */ protected long getDataFileSize() throws IOException { long size = 0; storageLock.readLock().lock(); try { if (dataFile != null) { size = dataFile.length(); } } finally { storageLock.readLock().unlock(); } return size; }
/** * Serializes the object and write it out to the given position. * <p> * TODO: make this take a ded as well. * @return true unless error * @param obj * @param pos * @throws IOException */ protected boolean writeObject( Serializable obj, long pos ) throws IOException { byte[] data = elementSerializer.serialize( obj ); write( new IndexedDiskElementDescriptor( pos, data.length ), data ); return true; }
dataFile.truncate( expectedNextPos );
/** * Saves key file to disk. This converts the LRUMap to a HashMap for deserialization. */ protected void saveKeys() { try { if ( log.isInfoEnabled() ) { log.info( logCacheName + "Saving keys to: " + fileName + ", key count: " + keyHash.size() ); } keyFile.reset(); HashMap<K, IndexedDiskElementDescriptor> keys = new HashMap<K, IndexedDiskElementDescriptor>(); keys.putAll( keyHash ); if ( keys.size() > 0 ) { keyFile.writeObject( keys, 0 ); } if ( log.isInfoEnabled() ) { log.info( logCacheName + "Finished saving keys." ); } } catch ( Exception e ) { log.error( logCacheName + "Problem storing keys.", e ); } }
throws FileNotFoundException, IOException, InterruptedException this.dataFile = new IndexedDisk( new File( rafDir, fileName + ".data" ), getElementSerializer() ); this.keyFile = new IndexedDisk( new File( rafDir, fileName + ".key" ), getElementSerializer() ); else if ( keyFile.length() > 0 )
keyFile.readObject( new IndexedDiskElementDescriptor( 0, (int) keyFile.length() - IndexedDisk.HEADER_SIZE_BYTES ) );
dataFile.close(); keyFile.close(); dataFile = new IndexedDisk( new File( rafDir, fileName + ".data" ), getElementSerializer() ); keyFile = new IndexedDisk( new File( rafDir, fileName + ".key" ), getElementSerializer() );