blob: 450f160a1cc5aba0376d91a2d43009be0ba0beb0 [file] [log] [blame]
Jonathan Hart6df90172014-04-03 10:13:11 -07001package net.onrc.onos.core.datastore.ramcloud;
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -07002
3import java.util.Objects;
4
Jonathan Hart6df90172014-04-03 10:13:11 -07005import net.onrc.onos.core.datastore.IKVTableID;
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -07006
7public class RCTableID implements IKVTableID {
8 private final String tableName;
9 private long tableID;
10
11 public RCTableID(String tableName) {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070012 this.tableName = tableName;
13 this.tableID = 0;
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070014 }
15
16 @Override
17 public String getTableName() {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070018 return tableName;
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070019 }
20
21 // following is RAMCloud specific
22
23 public long getTableID() {
Ray Milkey269ffb92014-04-03 14:43:30 -070024 if (tableID != 0) {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070025 return tableID;
26 }
27 tableID = RCClient.getJRamCloudClient().createTable(tableName);
28 return tableID;
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070029 }
30
31 void resetTableID() {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070032 this.tableID = 0;
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070033 }
34
35 @Override
36 public String toString() {
Ray Milkey269ffb92014-04-03 14:43:30 -070037 return "[" + tableName + "]@" + getTableID();
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070038 }
39
40 @Override
41 public int hashCode() {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070042 return Objects.hash(tableName, getTableID());
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070043 }
44
45 @Override
46 public boolean equals(Object obj) {
Yuta HIGUCHIa14eb172014-03-24 15:03:23 -070047 if (this == obj) {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070048 return true;
Yuta HIGUCHIa14eb172014-03-24 15:03:23 -070049 }
50 if (obj == null) {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070051 return false;
Yuta HIGUCHIa14eb172014-03-24 15:03:23 -070052 }
53 if (getClass() != obj.getClass()) {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070054 return false;
Yuta HIGUCHIa14eb172014-03-24 15:03:23 -070055 }
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070056 RCTableID other = (RCTableID) obj;
57 return Objects.equals(tableName, other.tableName)
58 && Objects.equals(getTableID(), other.getTableID());
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070059 }
Ray Milkey0f913a02014-04-07 20:58:17 -070060}