/******************************************************************************* * Copyright (c) 2009 MATERNA Information & Communications. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html. For further * project-related information visit http://www.ws4d.org. The most recent * version of the JMEDS framework can be obtained from * http://sourceforge.net/projects/ws4d-javame. ******************************************************************************/ package org.ws4d.java.communication.connection.ip; import org.ws4d.java.structures.DataStructure; import org.ws4d.java.structures.Iterator; import org.ws4d.java.structures.LinkedList; /** * This class represents the physical network interface. */ public class NetworkInterface { private DataStructure addresses = null; private String name = null; private final boolean supportsMulticast; private final boolean isUP; private final boolean isLoopback; /** * @param name the name. */ public NetworkInterface(String name, boolean supportsMulticast, boolean isUp, boolean isLoopback) { this.name = name; this.supportsMulticast = supportsMulticast; this.isUP = isUp; this.isLoopback = isLoopback; } /** * Returns the name of this network interface. * * @return the name. */ public String getName() { return name; } /** * Adds an network address to this network interface. * * @param ip network address to add. */ public void addAddress(IPAddress address) { if (addresses == null) { addresses = new LinkedList(); } addresses.add(address); } /** * Returns an array with all network addresses for this network interface. * * @return array with network addresses. */ public Iterator getAddresses() { if (addresses == null || addresses.size() == 0) { return null; } return addresses.iterator(); } /** * @return the supportsMulticast */ public boolean supportsMulticast() { return supportsMulticast; } /** * @return whether the interface is up and running */ public boolean isUp() { return this.isUP; } /** * @return the isLoopback */ public boolean isLoopback() { return isLoopback; } /* * (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { return name.hashCode(); } /* * (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { StringBuffer sb = new StringBuffer(getName()); sb.append(" < "); Iterator addrs = addresses.iterator(); while (addrs.hasNext()) { String adr = addrs.next().toString(); sb.append(adr); if (addrs.hasNext()) { sb.append(", "); } } sb.append(" >"); return sb.toString(); } }