package org.apache.hadoop.hdfs.protocol; import java.io.*; import org.apache.hadoop.io.*; /** * The header for the OP_WRITE_BLOCK datanode operation. */ public class MergeBlockHeader extends DataTransferHeader implements Writable { private int namespaceId; private long blockId; private long offsetInBlock; private long length; private boolean isRecovery; private long genStamp; private int level; public MergeBlockHeader(final int dataTransferVersion, final int namespaceId, final long blockId, final long offsetInBlock, final long length, boolean isRecovery, final long genStamp, final int level) { super(dataTransferVersion, DataTransferProtocol.OP_MERGE_BLOCK); set(namespaceId, blockId, offsetInBlock, length, isRecovery, genStamp, level); } public MergeBlockHeader(VersionAndOpcode versionAndOpcode) { super(versionAndOpcode); } public void set(int namespaceId, long blockId, long offsetInBlock, long length, boolean isRecovery, long genStamp,int level) { this.namespaceId = namespaceId; this.blockId = blockId; this.offsetInBlock = offsetInBlock; this.length = length; this.isRecovery = isRecovery; this.genStamp = genStamp; this.level= level; } public void setNamespaceId(int namespaceId) { this.namespaceId = namespaceId; } public void setBlockId(long blockId) { this.blockId = blockId; } public void setOffsetInBlock(long offsetInBlock) { this.offsetInBlock = offsetInBlock; } public void setLength(long length) { this.length = length; } public void setGenStamp(long genStamp) { this.genStamp = genStamp; } public int getNamespaceId() { return namespaceId; } public long getBlockId() { return blockId; } public long getOffsetInBlock() { return offsetInBlock; } public long getLength() { return length; } public long getGenStamp() { return genStamp; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public boolean getIsRecovery() { return isRecovery; } public void setRecovery(boolean isRecovery) { this.isRecovery = isRecovery; } // /////////////////////////////////// // Writable // /////////////////////////////////// public void write(DataOutput out) throws IOException { if (getDataTransferVersion() >= DataTransferProtocol.FEDERATION_VERSION) { out.writeInt(namespaceId); } out.writeLong(blockId); out.writeLong(offsetInBlock); out.writeLong(length); out.writeBoolean(isRecovery); out.writeLong(genStamp); out.writeInt(level); } public void readFields(DataInput in) throws IOException { if (getDataTransferVersion() >= DataTransferProtocol.FEDERATION_VERSION) { namespaceId = in.readInt(); } blockId = in.readLong(); offsetInBlock = in.readLong(); length = in.readLong(); isRecovery = in.readBoolean(); genStamp = in.readLong(); level = in.readInt(); } @Override public String toString() { return "MergeBlockHeader [namespaceId=" + namespaceId + ", blockId=" + blockId + ", offsetInBlock=" + offsetInBlock + ", length=" + length + ", isRecovery=" + isRecovery + ", genStamp=" + genStamp + ", level=" + level + "]"; } }