/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ package org.apache.hadoop.hbase.snapshot; import java.io.IOException; import java.io.DataInput; import java.io.DataOutput; import org.apache.hadoop.io.Writable; import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription; import org.apache.hadoop.hbase.util.Bytes; /** * Writable version of the SnapshotDescription used by the rpc */ public class HSnapshotDescription implements Writable { private SnapshotDescription proto; public HSnapshotDescription() { } public HSnapshotDescription(final SnapshotDescription proto) { assert proto != null : "proto must be non-null"; this.proto = proto; } public String getName() { return this.proto.getName(); } public SnapshotDescription getProto() { return this.proto; } public SnapshotDescription.Type getType() { return this.proto.getType(); } public String getTable() { return this.proto.getTable(); } public boolean hasTable() { return this.proto.hasTable(); } public long getCreationTime() { return this.proto.getCreationTime(); } public int getVersion() { return this.proto.getVersion(); } public String toString() { if (this.proto != null) { return this.proto.toString(); } return "(no snapshot)"; } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof HSnapshotDescription)) { return false; } SnapshotDescription oproto = ((HSnapshotDescription)obj).getProto(); if (this.proto == oproto) { return true; } if (this.proto == null && oproto != null) { return false; } return this.proto.equals(oproto); } // Writable /** * <em> INTERNAL </em> This method is a part of {@link Writable} interface * and is used for de-serialization of the HTableDescriptor over RPC */ @Override public void readFields(DataInput in) throws IOException { byte[] data = Bytes.readByteArray(in); if (data.length > 0) { this.proto = SnapshotDescription.parseFrom(data); } else { this.proto = null; } } /** * <em> INTERNAL </em> This method is a part of {@link Writable} interface * and is used for serialization of the HTableDescriptor over RPC */ @Override public void write(DataOutput out) throws IOException { if (this.proto != null) { Bytes.writeByteArray(out, this.proto.toByteArray()); } else { Bytes.writeByteArray(out, new byte[0]); } } }