blob: b6b38dbdbe523e74615277edd52fd135fb3e0f96 [file] [log] [blame]
Ayaka Koshibe74a23922014-09-09 16:45:39 -07001package org.onlab.onos.net;
2
3import static com.google.common.base.MoreObjects.toStringHelper;
4
5import java.util.Collections;
6import java.util.HashSet;
7import java.util.Objects;
8import java.util.Set;
9
10import org.onlab.onos.net.provider.ProviderId;
11import org.onlab.packet.IPv4;
12import org.onlab.packet.MACAddress;
13
14public class DefaultHost extends AbstractElement implements Host {
15
16 private final MACAddress mac;
17 private final short vlan;
18 private final HostLocation location;
19 private final Set<IPv4> ips;
20
21 protected DefaultHost(ProviderId providerId, ElementId id, MACAddress mac,
22 short vlan, HostLocation loc, Set<IPv4> ips) {
23 super(providerId, id);
24 this.mac = mac;
25 this.vlan = vlan;
26 this.location = loc;
27 this.ips = new HashSet<IPv4>(ips);
28 }
29
30 @Override
31 public HostId id() {
32 return (HostId) super.id();
33 }
34
35 @Override
36 public MACAddress mac() {
37 return mac;
38 }
39
40 @Override
41 public Set<IPv4> ipAddresses() {
42 return Collections.unmodifiableSet(ips);
43 }
44
45 @Override
46 public HostLocation location() {
47 return location;
48 }
49
50 @Override
51 public short vlan() {
52 return vlan;
53 }
54
55 @Override
56 public int hashCode() {
57 return Objects.hash(id, mac, vlan, location);
58 }
59
60 @Override
61 public boolean equals(Object obj) {
62 if (obj instanceof DefaultHost) {
63 final DefaultHost other = (DefaultHost) obj;
64 return Objects.equals(this.id, other.id) &&
65 Objects.equals(this.mac, other.mac) &&
66 Objects.equals(this.vlan, other.vlan) &&
67 Objects.equals(this.location, other.location);
68 }
69 return false;
70 }
71
72 @Override
73 public String toString() {
74 return toStringHelper(this)
75 .add("id", id)
76 .add("mac", mac)
77 .add("vlan", vlan)
78 .add("location", location)
79 .add("ipAddresses", ips)
80 .toString();
81 }
82
83}