package com.sleepycat.je.log; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.config.EnvironmentParams; import com.sleepycat.je.dbi.EnvironmentImpl; import de.ovgu.cide.jakutil.*; /** * The checkpoint monitor saves information about log writes to decide when a * checkpoint is needed. */ class CheckpointMonitor { private int bytesWritten; private long periodInBytes; private EnvironmentImpl envImpl; CheckpointMonitor( EnvironmentImpl envImpl) throws DatabaseException { bytesWritten=0; periodInBytes=envImpl.getConfigManager().getLong(EnvironmentParams.CHECKPOINTER_BYTES_INTERVAL); periodInBytes/=10; this.envImpl=envImpl; } /** * Update checkpoint driving information. Call from within the log write * latch. * @return true if a checkpoint is needed. */ boolean recordLogWrite( int entrySize, LoggableObject item){ bytesWritten+=entrySize; return (bytesWritten >= periodInBytes); } /** * Wake up the checkpointer. Note that the check on bytesWritten is * actually within a latched period. */ void activate(){ envImpl.getCheckpointer().wakeup(); bytesWritten=0; } }