blob: 3bf9a3087c5905f1a9d7cb8ac9775c33137cd5e3 [file] [log] [blame]
Toshio Koide025a9152014-07-21 11:00:34 -07001package net.onrc.onos.api.flowmanager;
2
Toshio Koide515ba842014-08-20 11:53:37 -07003import java.util.Objects;
4
Toshio Koide778c4d62014-08-29 11:18:31 -07005import javax.annotation.concurrent.Immutable;
6
Toshio Koidefad1cd52014-08-07 17:10:07 -07007import net.onrc.onos.api.batchoperation.BatchOperationTarget;
Toshio Koide025a9152014-07-21 11:00:34 -07008
9/**
Toshio Koide7894ca02014-08-15 14:30:13 -070010 * Represents ID for Flow objects.
Toshio Koide778c4d62014-08-29 11:18:31 -070011 * <p>
12 * This class is immutable.
Toshio Koide025a9152014-07-21 11:00:34 -070013 */
Toshio Koide778c4d62014-08-29 11:18:31 -070014@Immutable
15public final class FlowId implements BatchOperationTarget {
16 private final long id;
Toshio Koide025a9152014-07-21 11:00:34 -070017
18 /**
Toshio Koide2c67a2d2014-08-27 11:30:56 -070019 * Default constructor for Kryo deserialization.
20 */
21 @Deprecated
22 protected FlowId() {
Toshio Koide778c4d62014-08-29 11:18:31 -070023 id = 0;
Toshio Koide2c67a2d2014-08-27 11:30:56 -070024 }
25
26 /**
Toshio Koide025a9152014-07-21 11:00:34 -070027 * Creates new instance with string ID.
Toshio Koide515ba842014-08-20 11:53:37 -070028 * <p>
Sho SHIMIZU7cd8a422014-08-27 16:05:21 -070029 * This FlowId instance should be generated with
30 * {@link net.onrc.onos.core.util.IdGenerator} of flow ID.
Toshio Koide025a9152014-07-21 11:00:34 -070031 *
32 * @param id String representation of the ID.
33 */
Toshio Koide515ba842014-08-20 11:53:37 -070034 public FlowId(long id) {
Toshio Koide778c4d62014-08-29 11:18:31 -070035 this.id = id;
Toshio Koide025a9152014-07-21 11:00:34 -070036 }
37
38 @Override
39 public String toString() {
Toshio Koide778c4d62014-08-29 11:18:31 -070040 return "0x" + Long.toHexString(id);
Toshio Koide025a9152014-07-21 11:00:34 -070041 }
42
43 @Override
44 public int hashCode() {
Toshio Koide778c4d62014-08-29 11:18:31 -070045 return Objects.hashCode(id);
Toshio Koide025a9152014-07-21 11:00:34 -070046 }
47
48 @Override
49 public boolean equals(Object obj) {
50 if (obj instanceof FlowId) {
Toshio Koide515ba842014-08-20 11:53:37 -070051 FlowId that = (FlowId) obj;
Toshio Koide778c4d62014-08-29 11:18:31 -070052 return Objects.equals(this.id, that.id);
Toshio Koide025a9152014-07-21 11:00:34 -070053 }
54 return false;
55 }
56}