UpgradeStatusReport.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:4k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.hdfs.server.common;
  19. import java.io.DataInput;
  20. import java.io.DataOutput;
  21. import java.io.IOException;
  22. import org.apache.hadoop.io.Writable;
  23. import org.apache.hadoop.io.WritableFactories;
  24. import org.apache.hadoop.io.WritableFactory;
  25. /**
  26.  * Base upgrade upgradeStatus class.
  27.  * Overload this class if specific status fields need to be reported.
  28.  * 
  29.  * Describes status of current upgrade.
  30.  */
  31. public class UpgradeStatusReport implements Writable {
  32.   protected int version;
  33.   protected short upgradeStatus;
  34.   protected boolean finalized;
  35.   public UpgradeStatusReport() {
  36.     this.version = 0;
  37.     this.upgradeStatus = 0;
  38.     this.finalized = false;
  39.   }
  40.   public UpgradeStatusReport(int version, short status, boolean isFinalized) {
  41.     this.version = version;
  42.     this.upgradeStatus = status;
  43.     this.finalized = isFinalized;
  44.   }
  45.   /**
  46.    * Get the layout version of the currently running upgrade.
  47.    * @return layout version
  48.    */
  49.   public int getVersion() {
  50.     return this.version;
  51.   }
  52.   /**
  53.    * Get upgrade upgradeStatus as a percentage of the total upgrade done.
  54.    * 
  55.    * @see Upgradeable#getUpgradeStatus() 
  56.    */ 
  57.   public short getUpgradeStatus() {
  58.     return upgradeStatus;
  59.   }
  60.   /**
  61.    * Is current upgrade finalized.
  62.    * @return true if finalized or false otherwise.
  63.    */
  64.   public boolean isFinalized() {
  65.     return this.finalized;
  66.   }
  67.   /**
  68.    * Get upgradeStatus data as a text for reporting.
  69.    * Should be overloaded for a particular upgrade specific upgradeStatus data.
  70.    * 
  71.    * @param details true if upgradeStatus details need to be included, 
  72.    *                false otherwise
  73.    * @return text
  74.    */
  75.   public String getStatusText(boolean details) {
  76.     return "Upgrade for version " + getVersion() 
  77.             + (upgradeStatus<100 ? 
  78.               " is in progress. Status = " + upgradeStatus + "%" : 
  79.               " has been completed."
  80.               + "nUpgrade is " + (finalized ? "" : "not ")
  81.               + "finalized.");
  82.   }
  83.   /**
  84.    * Print basic upgradeStatus details.
  85.    */
  86.   public String toString() {
  87.     return getStatusText(false);
  88.   }
  89.   /////////////////////////////////////////////////
  90.   // Writable
  91.   /////////////////////////////////////////////////
  92.   static {                                      // register a ctor
  93.     WritableFactories.setFactory
  94.       (UpgradeStatusReport.class,
  95.        new WritableFactory() {
  96.          public Writable newInstance() { return new UpgradeStatusReport(); }
  97.        });
  98.   }
  99.   /**
  100.    */
  101.   public void write(DataOutput out) throws IOException {
  102.     out.writeInt(this.version);
  103.     out.writeShort(this.upgradeStatus);
  104.   }
  105.   /**
  106.    */
  107.   public void readFields(DataInput in) throws IOException {
  108.     this.version = in.readInt();
  109.     this.upgradeStatus = in.readShort();
  110.   }
  111. }