All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gemstone.gemfire.Delta Maven / Gradle / Ivy

/*
 * Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you
 * may not use this file except in compliance with the License. You
 * may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License. See accompanying
 * LICENSE file.
 */
package com.gemstone.gemfire;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;


/**
 * This interface defines a contract between the application and GemFire that
 * allows GemFire to determine whether an application object contains a delta,
 * allows GemFire to extract the delta from an application object, and generate
 * a new application object by applying a delta to an existing application
 * object. The difference in object state is contained in the {@link DataOutput}
 * and {@link DataInput} parameters.
 * 
 * @since 6.1
 * 
 */
public interface Delta {

  /**
   * Returns true if this object has pending changes it can write out.
   */
  boolean hasDelta();

  /**
   * This method is invoked on an application object at the delta sender, if
   * GemFire determines the presence of a delta by calling
   * {@link Delta#hasDelta()} on the object. The delta is written to the
   * {@link DataOutput} object provided by GemFire.
   * 
   * Any delta state should be reset in this method.
   * 
   * @throws IOException
   */
  void toDelta(DataOutput out) throws IOException;


  /**
   * This method is invoked on an existing application object when an update is
   * received as a delta. This method throws an {@link InvalidDeltaException}
   * when the delta in the {@link DataInput} cannot be applied to the object.
   * GemFire automatically handles an {@link InvalidDeltaException} by
   * reattempting the update by sending the full application object.
   * 
   * @throws IOException
   * @throws InvalidDeltaException
   */
  void fromDelta(DataInput in) throws IOException, InvalidDeltaException;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy