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  * The type used to refer to a thread state.
10  *
11  * A state describes lower-level action of a thread
12  * such as reading / writing a file or waiting for a mutex.
13  */
14 public enum StateType {
15   STATE_UNKNOWN((byte)0x0),
16   STATE_MUTEX_WAIT((byte)0x1);
17 
18   private final byte value;
19 
StateType(final byte value)20   StateType(final byte value) {
21     this.value = value;
22   }
23 
24   /**
25    * Get the internal representation value.
26    *
27    * @return the internal representation value.
28    */
getValue()29   byte getValue() {
30     return value;
31   }
32 
33   /**
34    * Get the State type from the internal representation value.
35    *
36    * @param value the internal representation value.
37    *
38    * @return the state type
39    *
40    * @throws IllegalArgumentException if the value does not match
41    *     a StateType
42    */
fromValue(final byte value)43   static StateType fromValue(final byte value)
44       throws IllegalArgumentException {
45     for (final StateType threadType : StateType.values()) {
46       if (threadType.value == value) {
47         return threadType;
48       }
49     }
50     throw new IllegalArgumentException(
51         "Unknown value for StateType: " + value);
52   }
53 }
54