diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java')
-rw-r--r-- | framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java new file mode 100644 index 00000000..2877701e --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java @@ -0,0 +1,117 @@ +/* + * Copyright 2014 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.net; + +import org.onosproject.net.provider.ProviderId; +import org.onlab.packet.IpAddress; +import org.onlab.packet.MacAddress; +import org.onlab.packet.VlanId; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; + +import static com.google.common.base.MoreObjects.toStringHelper; + +/** + * A basic implementation of a Host. + */ +public class DefaultHost extends AbstractElement implements Host { + + private final MacAddress mac; + private final VlanId vlan; + private final HostLocation location; + private final Set<IpAddress> ips; + + /** + * Creates an end-station host using the supplied information. + * + * @param providerId provider identity + * @param id host identifier + * @param mac host MAC address + * @param vlan host VLAN identifier + * @param location host location + * @param ips host IP addresses + * @param annotations optional key/value annotations + */ + public DefaultHost(ProviderId providerId, HostId id, MacAddress mac, + VlanId vlan, HostLocation location, Set<IpAddress> ips, + Annotations... annotations) { + super(providerId, id, annotations); + this.mac = mac; + this.vlan = vlan; + this.location = location; + this.ips = new HashSet<>(ips); + } + + @Override + public HostId id() { + return (HostId) id; + } + + @Override + public MacAddress mac() { + return mac; + } + + @Override + public Set<IpAddress> ipAddresses() { + return Collections.unmodifiableSet(ips); + } + + @Override + public HostLocation location() { + return location; + } + + @Override + public VlanId vlan() { + return vlan; + } + + @Override + public int hashCode() { + return Objects.hash(id, mac, vlan, location); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof DefaultHost) { + final DefaultHost other = (DefaultHost) obj; + return Objects.equals(this.id, other.id) && + Objects.equals(this.mac, other.mac) && + Objects.equals(this.vlan, other.vlan) && + Objects.equals(this.location, other.location); + } + return false; + } + + @Override + public String toString() { + return toStringHelper(this) + .add("id", id) + .add("mac", mac) + .add("vlan", vlan) + .add("location", location) + .add("ipAddresses", ips) + .toString(); + } + +} |