com.gemstone.gemfire.internal.VersionedDataStream 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.internal;
import java.io.DataInput;
import java.io.DataOutput;
import com.gemstone.gemfire.DataSerializable;
import com.gemstone.gemfire.internal.shared.Version;
/**
* An extension to {@link DataOutput}, {@link DataInput} used internally in
* product to indicate that the input/output stream is attached to a GemFire
* peer having a different version. See the spec on rolling upgrades for more
* details: Rolling
* Upgrades.
*
* Internal product classes that implement {@link DataSerializableFixedID} and
* {@link DataSerializable} and change serialization format must check this on
* DataInput/DataOutput (see
* {@link InternalDataSerializer#getVersionForDataStream} methods) and deal with
* serialization with previous {@link Version}s appropriately.
*
* @author swale
* @since 7.1
*/
public interface VersionedDataStream {
/**
* If the remote peer to which this input/output is connected has a lower
* version that this member, then this returns the {@link Version} of the peer
* else null. If the peer has a higher {@link Version}, then this member
* cannot do any adjustment to serialization and its the remote peer's
* responsibility to adjust the serialization/deserialization according to
* this peer.
*/
public Version getVersion();
}