001/** 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hdfs.server.namenode; 019 020import org.apache.hadoop.hdfs.util.EnumCounters; 021 022/** 023 * The content types such as file, directory and symlink to be computed. 024 */ 025public enum Content { 026 /** The number of files. */ 027 FILE, 028 /** The number of directories. */ 029 DIRECTORY, 030 /** The number of symlinks. */ 031 SYMLINK, 032 033 /** The total of file length in bytes. */ 034 LENGTH, 035 /** The total of disk space usage in bytes including replication. */ 036 DISKSPACE, 037 038 /** The number of snapshots. */ 039 SNAPSHOT, 040 /** The number of snapshottable directories. */ 041 SNAPSHOTTABLE_DIRECTORY; 042 043 /** Content counts. */ 044 public static class Counts extends EnumCounters<Content> { 045 public static Counts newInstance() { 046 return new Counts(); 047 } 048 049 private Counts() { 050 super(Content.class); 051 } 052 } 053 054 private static final EnumCounters.Factory<Content, Counts> FACTORY 055 = new EnumCounters.Factory<Content, Counts>() { 056 @Override 057 public Counts newInstance() { 058 return Counts.newInstance(); 059 } 060 }; 061 062 /** A map of counters for the current state and the snapshots. */ 063 public static class CountsMap 064 extends EnumCounters.Map<CountsMap.Key, Content, Counts> { 065 /** The key type of the map. */ 066 public static enum Key { CURRENT, SNAPSHOT } 067 068 CountsMap() { 069 super(FACTORY); 070 } 071 } 072}