Package ch.rakudave.jnetmap.model.IF

Source Code of ch.rakudave.jnetmap.model.IF.TransparentIF

package ch.rakudave.jnetmap.model.IF;

import java.net.InetAddress;
import java.util.Date;

import ch.rakudave.jnetmap.model.Connection;
import ch.rakudave.jnetmap.model.device.Device;
import ch.rakudave.jnetmap.net.Subnet;
import ch.rakudave.jnetmap.net.status.Status;

import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
* This interface has no status and no address of its own, but mirrors the state of its counterpart
* Should be used for Switches and Hubs etc...
*
* @author rakudave
*/

@XStreamAlias("RepeaterIF")
public class TransparentIF implements NetworkIF {
  private String name = "";
  private Device device;
  private Connection connection;
  private NetworkIF counterpart;
  private boolean useDevice;
  private Status status = Status.UNKNOWN;
 
  public TransparentIF(Device parent, Connection connection, NetworkIF counterpart) {
    device = parent;
    this.connection = connection;
    setCounterpart(counterpart);
    name = "Port " + (parent.getInterfaces().size()+1);
  }

  @Override
  public InetAddress getAddress() {
    return null;
  }

  @Override
  public String getCanonicalName() {
    return "";
  }
 
  public NetworkIF getCounterpart() {
    return counterpart;
  }

  @Override
  public Device getDevice() {
    return device;
  }

  @Override
  public InetAddress getGateway() {
    return null;
  }

  @Override
  public Date getLastSeen() {
    return counterpart.getLastSeen();
  }

  @Override
  public String getName() {
    return name;
  }

  @Override
  public Status getStatus() {
    return status;
  }

  @Override
  public Subnet getSubnet() {
    return null;
  }

  @Override
  public boolean setAddress(String addr) {
    return true;
  }
 
  public void setCounterpart(NetworkIF nif) {
    if (nif == null) return;
    counterpart = nif;
    if (!(nif instanceof PhysicalIF)) {
      useDevice = true;
    }
  }

  @Override
  public boolean setGateway(String gateway) {
    return true;
  }

  @Override
  public void setName(String name) {
    if (name != null) this.name = name;
  }

  @Override
  public boolean setSubnet(String subnet) {
    return true;
  }
 
  @Override
  public String toString() {
    return name + ": transparent";
  }

  @Override
  public void updateStatus() {
    Status newStatus = (useDevice)?counterpart.getDevice().getStatus():counterpart.getStatus();
    if (!status.equals(newStatus)) {
      status = newStatus;
      connection.setStatus(this, status);
    }
  }

  @Override
  public Connection getConnection() {
    return connection;
  }
}
TOP

Related Classes of ch.rakudave.jnetmap.model.IF.TransparentIF

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.