UPDATE 2.2

This commit is contained in:
Administrator
2024-01-30 16:54:57 +08:00
parent b4fccf3a03
commit e4f4c77c19
70 changed files with 4671 additions and 1520 deletions
+132
View File
@@ -0,0 +1,132 @@
package org.kne.cloud.network.klalb;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
import java.awt.Font;
import java.util.Objects;
public class TPanel extends JPanel {
private JLabel tname;
private JLabel targ;
private KLALBRemoteLine tunnel;
@Override
public int hashCode() {
return Objects.hash(tunnel);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TPanel other = (TPanel) obj;
return Objects.equals(tunnel, other.tunnel);
}
public JLabel getTname() {
return tname;
}
public JLabel getTarg() {
return targ;
}
/**
* @wbp.parser.constructor
*/
public TPanel(KLALBRemoteLine t) {
this.tunnel = t;
setOpaque(false);
setLayout(new BorderLayout(0, 0));
tname = new JLabel();
if(t.getSocketAddress()!=null) {
tname.setText(t.getSocketAddress().toString());
}else {
tname.setText(t.getKplink().toString());
}
tname.setFont(new Font("宋体", Font.BOLD, 16));
add(tname, BorderLayout.WEST);
targ = new JLabel();
targ.setFont(new Font("宋体", Font.PLAIN, 13));
targ.setHorizontalAlignment(SwingConstants.TRAILING);
targ.setForeground(Color.YELLOW);
add(targ, BorderLayout.CENTER);
setBorder(new LineBorder(Color.BLACK));
setSize(650, 25);
setPreferredSize(getSize());
}
private volatile long up, down, ups, downs;
private volatile long delay=Long.MAX_VALUE;
public long getDelay() {
return delay;
}
private void updateText() {
String dl;
if (delay == Long.MIN_VALUE)
dl = "??";
else
dl = Long.toString(delay / 1000000L);
targ.setText(bytesUnit(up) + "\u2191 " + bytesUnit(down) + "\u2193 " + bytesUnit(ups) + "/s\u2191 "
+ bytesUnit(downs) + "/s\u2193 " + dl + "ms");
}
public KLALBRemoteLine getTunnel() {
return tunnel;
}
private String bytesUnit(long v) {
if (v >= 1024L * 1024 * 1024 * 1024 * 1024) {
return String.format("%.1f", v / (1024.0 * 1024.0 * 1024.0 * 1024.0 * 1024.0)) + "PB";
} else if (v >= 1024L * 1024 * 1024 * 1024) {
return String.format("%.1f", v / (1024.0 * 1024.0 * 1024.0 * 1024.0)) + "TB";
} else if (v >= 1024L * 1024 * 1024) {
return String.format("%.1f", v / (1024.0 * 1024.0 * 1024.0)) + "GB";
} else if (v >= 1024L * 1024) {
return String.format("%.1f", v / (1024.0 * 1024.0)) + "MB";
} else if (v >= 1024L) {
return String.format("%.1f", v / (1024.0)) + "KB";
} else {
return v + "B";
}
}
public void updateTraffic() {
switch (tunnel.getMonitor().getState()) {
case Monitor.OFFLINE:
tname.setForeground(Color.RED);
break;
case Monitor.CONNECTING:
tname.setForeground(Color.YELLOW);
break;
case Monitor.ONLINE:
tname.setForeground(Color.GREEN);
break;
default:
break;
}
up = tunnel.getMonitor().getOutTraffic();
down = tunnel.getMonitor().getInTraffic();
this.ups = tunnel.getMonitor().getOutSpeed();
this.downs = tunnel.getMonitor().getInSpeed();
this.delay = tunnel.getMonitor().getLatencyAvg();
//System.out.println(delay);
updateText();
}
}