blob: 3e94c7bb966c06f225eca4e1bdee32b7bf034e83 [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>
29 * This FlowId instance should be generated with {@link FlowIdGenerator}.
Toshio Koide025a9152014-07-21 11:00:34 -070030 *
31 * @param id String representation of the ID.
32 */
Toshio Koide515ba842014-08-20 11:53:37 -070033 public FlowId(long id) {
Toshio Koide778c4d62014-08-29 11:18:31 -070034 this.id = id;
Toshio Koide025a9152014-07-21 11:00:34 -070035 }
36
37 @Override
38 public String toString() {
Toshio Koide778c4d62014-08-29 11:18:31 -070039 return "0x" + Long.toHexString(id);
Toshio Koide025a9152014-07-21 11:00:34 -070040 }
41
42 @Override
43 public int hashCode() {
Toshio Koide778c4d62014-08-29 11:18:31 -070044 return Objects.hashCode(id);
Toshio Koide025a9152014-07-21 11:00:34 -070045 }
46
47 @Override
48 public boolean equals(Object obj) {
49 if (obj instanceof FlowId) {
Toshio Koide515ba842014-08-20 11:53:37 -070050 FlowId that = (FlowId) obj;
Toshio Koide778c4d62014-08-29 11:18:31 -070051 return Objects.equals(this.id, that.id);
Toshio Koide025a9152014-07-21 11:00:34 -070052 }
53 return false;
54 }
55}