]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/java/src/main/java/org/rocksdb/ReusedSynchronisationType.java
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / rocksdb / java / src / main / java / org / rocksdb / ReusedSynchronisationType.java
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 package org.rocksdb;
6
7 /**
8 * Determines the type of synchronisation primitive used
9 * in native code.
10 */
11 public enum ReusedSynchronisationType {
12 /**
13 * Standard mutex.
14 */
15 MUTEX((byte)0x0),
16
17 /**
18 * Use adaptive mutex, which spins in the user space before resorting
19 * to kernel. This could reduce context switch when the mutex is not
20 * heavily contended. However, if the mutex is hot, we could end up
21 * wasting spin time.
22 */
23 ADAPTIVE_MUTEX((byte)0x1),
24
25 /**
26 * There is a reused buffer per-thread.
27 */
28 THREAD_LOCAL((byte)0x2);
29
30 private final byte value;
31
32 ReusedSynchronisationType(final byte value) {
33 this.value = value;
34 }
35
36 /**
37 * Returns the byte value of the enumerations value
38 *
39 * @return byte representation
40 */
41 public byte getValue() {
42 return value;
43 }
44
45 /**
46 * Get ReusedSynchronisationType by byte value.
47 *
48 * @param value byte representation of ReusedSynchronisationType.
49 *
50 * @return {@link org.rocksdb.ReusedSynchronisationType} instance.
51 * @throws java.lang.IllegalArgumentException if an invalid
52 * value is provided.
53 */
54 public static ReusedSynchronisationType getReusedSynchronisationType(
55 final byte value) {
56 for (final ReusedSynchronisationType reusedSynchronisationType
57 : ReusedSynchronisationType.values()) {
58 if (reusedSynchronisationType.getValue() == value) {
59 return reusedSynchronisationType;
60 }
61 }
62 throw new IllegalArgumentException(
63 "Illegal value provided for ReusedSynchronisationType.");
64 }
65 }