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 * The transaction db write policy. 9 */ 10 public enum TxnDBWritePolicy { 11 /** 12 * Write only the committed data. 13 */ 14 WRITE_COMMITTED((byte)0x00), 15 16 /** 17 * Write data after the prepare phase of 2pc. 18 */ 19 WRITE_PREPARED((byte)0x1), 20 21 /** 22 * Write data before the prepare phase of 2pc. 23 */ 24 WRITE_UNPREPARED((byte)0x2); 25 26 private byte value; 27 TxnDBWritePolicy(final byte value)28 TxnDBWritePolicy(final byte value) { 29 this.value = value; 30 } 31 32 /** 33 * <p>Returns the byte value of the enumerations value.</p> 34 * 35 * @return byte representation 36 */ getValue()37 public byte getValue() { 38 return value; 39 } 40 41 /** 42 * <p>Get the TxnDBWritePolicy enumeration value by 43 * passing the byte identifier to this method.</p> 44 * 45 * @param byteIdentifier of TxnDBWritePolicy. 46 * 47 * @return TxnDBWritePolicy instance. 48 * 49 * @throws IllegalArgumentException If TxnDBWritePolicy cannot be found for 50 * the provided byteIdentifier 51 */ getTxnDBWritePolicy(final byte byteIdentifier)52 public static TxnDBWritePolicy getTxnDBWritePolicy(final byte byteIdentifier) { 53 for (final TxnDBWritePolicy txnDBWritePolicy : TxnDBWritePolicy.values()) { 54 if (txnDBWritePolicy.getValue() == byteIdentifier) { 55 return txnDBWritePolicy; 56 } 57 } 58 59 throw new IllegalArgumentException( 60 "Illegal value provided for TxnDBWritePolicy."); 61 } 62 } 63