1 // Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
2 //  This source code is licensed under both the GPLv2 (found in the
3 //  COPYING file in the root directory) and Apache 2.0 License
4 //  (found in the LICENSE.Apache file in the root directory).
5 
6 package org.rocksdb;
7 
8 /**
9  * File access pattern once a compaction has started
10  */
11 public enum AccessHint {
12   NONE((byte)0x0),
13   NORMAL((byte)0x1),
14   SEQUENTIAL((byte)0x2),
15   WILLNEED((byte)0x3);
16 
17   private final byte value;
18 
AccessHint(final byte value)19   AccessHint(final byte value) {
20     this.value = value;
21   }
22 
23   /**
24    * <p>Returns the byte value of the enumerations value.</p>
25    *
26    * @return byte representation
27    */
getValue()28   public byte getValue() {
29     return value;
30   }
31 
32   /**
33    * <p>Get the AccessHint enumeration value by
34    * passing the byte identifier to this method.</p>
35    *
36    * @param byteIdentifier of AccessHint.
37    *
38    * @return AccessHint instance.
39    *
40    * @throws IllegalArgumentException if the access hint for the byteIdentifier
41    *     cannot be found
42    */
getAccessHint(final byte byteIdentifier)43   public static AccessHint getAccessHint(final byte byteIdentifier) {
44     for (final AccessHint accessHint : AccessHint.values()) {
45       if (accessHint.getValue() == byteIdentifier) {
46         return accessHint;
47       }
48     }
49 
50     throw new IllegalArgumentException(
51         "Illegal value provided for AccessHint.");
52   }
53 }
54