blob: 0c2f6b071123afc9babc54a76cbf85093d4d7aef [file] [log] [blame]
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -07001package net.onrc.onos.datastore.ramcloud;
2
3import java.util.Objects;
4
5import net.onrc.onos.datastore.IKVTableID;
6
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() {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -070024 if ( tableID != 0) {
25 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() {
Yuta HIGUCHI826b4a42014-03-24 13:10:33 -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 HIGUCHI826b4a42014-03-24 13:10:33 -070047 if (this == obj)
48 return true;
49 if (obj == null)
50 return false;
51 if (getClass() != obj.getClass())
52 return false;
53 RCTableID other = (RCTableID) obj;
54 return Objects.equals(tableName, other.tableName)
55 && Objects.equals(getTableID(), other.getTableID());
Yuta HIGUCHI66ca1bf2014-03-12 18:34:09 -070056 }
57}