Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*-
   * See the file LICENSE for redistribution information.
   *
   * Copyright (c) 2004, 2010 Oracle and/or its affiliates.  All rights reserved.
   *
   */
  
  package com.sleepycat.je.rep.util.ldiff;
  
 import java.util.List;
 
 /*
  * This class is used for tracking the different regions between local and 
  * remote database, it saves the begin key/data pair and size of different area
  * on both local and remote database.
  */
 public class DiffTracker {
     /* Start block for the block different area. */
     private Block startBlock;
     /* Start position for the different block in the database. */
     private long remoteStart;
     /* Size of a block different area. */
     private long remoteDiffSize;
     /* Size of each block. */
     private final long blockSize;
     /* Collection of different areas. */
     private final List<MismatchedRegionregions;
 
     public DiffTracker(long blockSize) {
         this. = blockSize;
          = new ArrayList<MismatchedRegion>();
     }
 
     /* Set begin key/data pair and start position of a different block area. */
     public void setBlockDiffBegin(Block startBlockint startIndex) {
         this. = startBlock;
          = startIndex * ;
     }
 
     /* Calculate the size of a block different area. */
     public void calBlockDiffSize(int currentIndex) {
          = (currentIndex - 1) *  - ;
     }
 
     /* Add the different local and remote different areas to the collection. */
     public void addDiffRegion(Window window) {
         MismatchedRegion region = new MismatchedRegion();
         setBlockDiff(regiontrue);
         setWindowDiff(regionwindowwindow.getDiffSize(), true);
 
         if (!region.isNull()) {
             .add(region);
         }
 
          = 0;
     }
 
     private void setWindowDiff(MismatchedRegion region
                                Window window,
                                long diffSize
                                boolean doCheck) {
         if (doCheck && window.getDiffSize() == 0) {
             return;
         }
 
         region.setLocalBeginKey(window.getBeginKey());
         region.setLocalBeginData(window.getBeginData());
         region.setLocalDiffSize(diffSize);
     }
 
     private void setBlockDiff(MismatchedRegion region,
                               Block block,
                               long diffSize,
                               boolean doCheck) {
         if (doCheck &&  == 0) {
             return;
         }
 
         region.setRemoteBeginKey(block.getBeginKey());
         region.setRemoteBeginData(block.getBeginData());
         region.setRemoteDiffSize(diffSize);
     }
 
     /* Add the window additional area to the difference collection. */
     public void addWindowAdditionalDiffs(Window window) {
         MismatchedRegion region = new MismatchedRegion();
         setWindowDiff(regionwindow.false);
         .add(region);
     }
 
     /* Add the block additional area to the different collection. */
     public void addBlockBagAdditionalDiffs(Window windowBlockBag blkBag) {
         MismatchedRegion region = new MismatchedRegion();
         setBlockDiff(regionblkBag.getBlock(), 
                      .false);
         setWindowDiff(regionwindow.true);
         .add(region);
     }
    /* Return the different regions. */
    public List<MismatchedRegiongetDiffRegions() {
        return ;
    }
New to GrepCode? Check out our FAQ X