📄 contact.java
字号:
/** * simulator/Contact.java */package simulator;/** * A unidirectional contact between two nodes. This contact may periodically go * up and down. */public abstract class Contact extends CommandParser{ public static final int CONTACT_DOWN = 0; public static final int CONTACT_UP = 1; public static final int CONTACT_MSG_SENT = 2; public static final int CONTACT_MSG_DELIVERED = 3; protected Node srcNode = null; protected Node dstNode = null; protected String name = null; protected Contact reverseContact = null; protected Stats.StatCntEntry statCntEntry = new Stats.StatCntEntry(); public Contact() { super((Network) null); useLocalEventQueue(true); } public Contact(Contact org) { super(org); name = org.name; srcNode = org.srcNode; dstNode = org.dstNode; } public String toString() { return "CONTACT_'" + name + "'"; } public void setName(String nName) { name = nName; } public String getName() { return name; } public void setSource(Node sN) { srcNode = sN; } public Node getSource() { return srcNode; } public void setDest(Node dN) { dstNode = dN; } public Node getDest() { return dstNode; } public String getReverseContactName() { String name = getName(); int idx1 = name.indexOf("->"); if (idx1 > 0) { String a = name.substring(0, idx1); int idx2 = name.lastIndexOf(':'); if (idx2 < 0 || idx2 > idx1 + 2) { if (idx2 > 0) { return name.substring(idx1 + 2, idx2) + "->" + a + ":" + name.substring(idx2); } else { return name.substring(idx1 + 2) + "->" + a; } } } throw new RuntimeException("Contact name is incorrect: " + name); } public Contact getReverseContact() { if (reverseContact == null) { String revName = getReverseContactName(); if (revName != null) reverseContact = network.getContact(revName); if (reverseContact == null) { throw new RuntimeException( "getReverseContact called for contact without its reverseContact! Called in: " + this + "; Checked name: " + revName); } } return reverseContact; } public boolean abortSending() { return false; } abstract public double getLatency(); abstract public double getTransferTime(Message msg); abstract public boolean isUp(); abstract public boolean isIdle(); abstract public boolean sendMessage(Message msg); abstract public boolean contactUp(); abstract public boolean contactDown();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -