package com.sleepycat.je.log;
abstract public class LogManager {
  static final int HEADER_CHECKSUM_OFFSET=0;
  private boolean doChecksumOnRead;
  public boolean getChecksumOnRead(){
    return doChecksumOnRead;
  }
  protected static int hook504(  int r){
    r-=CHECKSUM_BYTES;
    return original(r);
  }
  protected void hook505(  DbConfigManager configManager) throws DatabaseException {
    doChecksumOnRead=configManager.getBoolean(EnvironmentParams.LOG_CHECKSUM_READ);
    original(configManager);
  }
@MethodObject static class LogManager_getLogEntryFromLogSource {
    protected void hook506() throws DatabaseException, ClosedChannelException, Exception {
      if (_this.doChecksumOnRead) {
        validator.update(_this.envImpl,entryBuffer,itemSize,false);
        validator.validate(_this.envImpl,storedChecksum,lsn);
      }
      original();
    }
    protected void hook507() throws DatabaseException, ClosedChannelException, Exception {
      validator=null;
      storedChecksum=LogUtils.getUnsignedInt(entryBuffer);
      if (_this.doChecksumOnRead) {
        validator=new ChecksumValidator();
        validator.update(_this.envImpl,entryBuffer,_this.HEADER_CONTENT_BYTES(),false);
      }
      original();
    }
  }
}
