]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/java/src/main/java/org/rocksdb/WriteStallInfo.java
import quincy beta 17.1.0
[ceph.git] / ceph / src / rocksdb / java / src / main / java / org / rocksdb / WriteStallInfo.java
diff --git a/ceph/src/rocksdb/java/src/main/java/org/rocksdb/WriteStallInfo.java b/ceph/src/rocksdb/java/src/main/java/org/rocksdb/WriteStallInfo.java
new file mode 100644 (file)
index 0000000..4aef0ed
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
+//  This source code is licensed under both the GPLv2 (found in the
+//  COPYING file in the root directory) and Apache 2.0 License
+//  (found in the LICENSE.Apache file in the root directory).
+
+package org.rocksdb;
+
+import java.util.Objects;
+
+public class WriteStallInfo {
+  private final String columnFamilyName;
+  private final WriteStallCondition currentCondition;
+  private final WriteStallCondition previousCondition;
+
+  /**
+   * Access is package private as this will only be constructed from
+   * C++ via JNI and for testing.
+   */
+  WriteStallInfo(final String columnFamilyName, final byte currentConditionValue,
+      final byte previousConditionValue) {
+    this.columnFamilyName = columnFamilyName;
+    this.currentCondition = WriteStallCondition.fromValue(currentConditionValue);
+    this.previousCondition = WriteStallCondition.fromValue(previousConditionValue);
+  }
+
+  /**
+   * Get the name of the column family.
+   *
+   * @return the name of the column family.
+   */
+  public String getColumnFamilyName() {
+    return columnFamilyName;
+  }
+
+  /**
+   * Get the current state of the write controller.
+   *
+   * @return the current state.
+   */
+  public WriteStallCondition getCurrentCondition() {
+    return currentCondition;
+  }
+
+  /**
+   * Get the previous state of the write controller.
+   *
+   * @return the previous state.
+   */
+  public WriteStallCondition getPreviousCondition() {
+    return previousCondition;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o)
+      return true;
+    if (o == null || getClass() != o.getClass())
+      return false;
+    WriteStallInfo that = (WriteStallInfo) o;
+    return Objects.equals(columnFamilyName, that.columnFamilyName)
+        && currentCondition == that.currentCondition && previousCondition == that.previousCondition;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(columnFamilyName, currentCondition, previousCondition);
+  }
+
+  @Override
+  public String toString() {
+    return "WriteStallInfo{"
+        + "columnFamilyName='" + columnFamilyName + '\'' + ", currentCondition=" + currentCondition
+        + ", previousCondition=" + previousCondition + '}';
+  }
+}