package es.tid.tedb;
import org.jgrapht.graph.DefaultWeightedEdge;
import es.tid.tedb.elements.Bandwidth;
/**
* IntraDomain Edge of a Traffic Engineering Database.
* @author ogondio, msc. pac
*
*/
public class IntraDomainEdge extends DefaultWeightedEdge {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Unnumbered Interface ID of the outgoing interface from the source
*/
public long src_if_id;
/**
* Unnumbered Interface ID of the incoming interface from the destination
*/
public long dst_if_id;
/**
* Numbered Interface ID of the outgoing interface from the source
*/
public Object src_Numif_id;
/**
* Numbered Interface ID of the incoming interface from the destination
*/
public Object dst_Numif_id;
/**
* Traffic engineering information, as defined in IETF
*/
public TE_Information TE_info = new TE_Information();
/**
* Transmission delay of the link (just transmission)
*/
private double delay_ms;
/**
* Number of parallel fibers in the logical link.
*/
public int numFibers;
/**
* Characterization of local node
*
*/
public Node_Info Local_Node_Info;
/**
* Characterization of remote node
*
*/
public Node_Info Remote_Node_Info;
/**
* where have we leanrt the info from...
*/
private String learntFrom;
/**
* SID of the source node
*/
private int src_sid;
/**
* SID of the destination node
*/
private int dst_sid;
private String linkID=null;
private boolean isDirectional;
private String type=null;
private double temetric;
private Bandwidth bw=null;
public String getLinkID() {
return linkID;
}
public void setLinkID(String linkID) {
this.linkID = linkID;
}
public boolean isDirectional() {
return isDirectional;
}
public void setDirectional(boolean isDirectional) {
this.isDirectional = isDirectional;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public double getTemetric() {
return temetric;
}
public void setTemetric(double temetric) {
this.temetric = temetric;
}
public Bandwidth getBw() {
return bw;
}
public void setBw(Bandwidth bw) {
this.bw = bw;
}
public IntraDomainEdge()
{
TE_info = new TE_Information();
}
public Object getSource(){
Object source= (Object)super.getSource();
return source;
}
public Object getTarget(){
Object destination= (Object)super.getTarget();
return destination;
}
public long getSrc_if_id() {
return src_if_id;
}
public void setSrc_if_id(long src_if_id) {
this.src_if_id = src_if_id;
}
public long getDst_if_id() {
return dst_if_id;
}
public void setDst_if_id(long dst_if_id) {
this.dst_if_id = dst_if_id;
}
public TE_Information getTE_info() {
return TE_info;
}
public void setTE_info(TE_Information tE_info) {
TE_info = tE_info;
}
public double getDelay_ms() {
return delay_ms;
}
public void setDelay_ms(double delay_ms) {
this.delay_ms = delay_ms;
}
public int getNumberFibers() {
return numFibers;
}
public void setNumberFibers(int numFibers) {
this.numFibers = numFibers;
}
public Object getSrc_Numif_id() {
return src_Numif_id;
}
public void setSrc_Numif_id(Object srcNumifId) {
src_Numif_id = srcNumifId;
}
public Node_Info getLocal_Node_Info() {
return Local_Node_Info;
}
public void setLocal_Node_Info(Node_Info local_Node_Info) {
Local_Node_Info = local_Node_Info;
}
public Node_Info getRemote_Node_Info() {
return Remote_Node_Info;
}
public void setRemote_Node_Info(Node_Info remote_Node_Info) {
Remote_Node_Info = remote_Node_Info;
}
public Object getDst_Numif_id() {
return dst_Numif_id;
}
public void setDst_Numif_id(Object dstNumifId) {
dst_Numif_id = dstNumifId;
}
public String getLearntFrom() {
return learntFrom;
}
public void setLearntFrom(String leanrtFrom) {
this.learntFrom = leanrtFrom;
}
public int getSrc_sid() {
return src_sid;
}
public void setSrc_sid(int src_sid) {
this.src_sid = src_sid;
}
public int getDst_sid() {
return dst_sid;
}
public void setDst_sid(int dst_sid) {
this.dst_sid = dst_sid;
}
public String toString(){
String ret=this.getSource()+":"+this.getSrc_if_id()+"-->"+this.getTarget()+":"+this.getDst_if_id()+" NumFibers = "+numFibers;
if (TE_info==null){
return ret;
}
else
{
if ((this.TE_info.getAvailableLabels()!=null) &&(this.TE_info.getAvailableLabels().getLabelSet()!=null)){
ret=ret+" Bitmap: {";
for (int i=0;i<this.TE_info.getAvailableLabels().getLabelSet().getNumLabels();++i){
ret = ret+ (this.TE_info.isWavelengthFree(i)?"0":"1");
}
ret=ret+"}";
ret=ret+" Reserved: {";
for (int i=0;i<this.TE_info.getAvailableLabels().getLabelSet().getNumLabels();++i){
ret = ret+ (this.TE_info.isWavelengthUnreserved(i)?"0":"1");
}
ret=ret+"}";
ret = ret + "\r\n TED: " + this.TE_info.toString() + "\r\n";
return ret;
}else {
return ret + "\r\n TED: " + this.TE_info.toString() + "\r\n";
}
}
}
/*
@Override
public String toString() {
return "IntraDomainEdge [src_if_id=" + src_if_id + ", dst_if_id="
+ dst_if_id + ", src_Numif_id=" + src_Numif_id
+ ", dst_Numif_id=" + dst_Numif_id + ", TE_info=" + TE_info
+ ", delay_ms=" + delay_ms + ", numFibers=" + numFibers + "]";
}*/
}