Skip to content

Commit 27d215a

Browse files
committed
Count echos received per peer
1 parent 243950e commit 27d215a

4 files changed

Lines changed: 25 additions & 8 deletions

File tree

ice-adapter/src/main/java/com/faforever/iceadapter/debug/DebugWindow.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,16 @@ public void peerStateChanged(Peer peer) {
177177

178178
@Override
179179
public void peerConnectivityUpdate(Peer peer) {
180-
new Thread(() -> {
180+
runOnUIThread(() -> {
181181
synchronized (peers) {
182182
peers.stream().filter(p -> p.id.get() == peer.getRemoteId()).forEach(p -> {
183-
p.averageRtt.set(Optional.ofNullable(peer.getIce().getConnectivityChecker()).map(PeerConnectivityCheckerModule::getAverageRTT).orElse(-1.0f).intValue());
184-
p.lastReceived.set(Optional.ofNullable(peer.getIce().getConnectivityChecker()).map(PeerConnectivityCheckerModule::getLastPacketReceived).map(last -> System.currentTimeMillis() - last).orElse(-1L).intValue());
183+
Optional<PeerConnectivityCheckerModule> connectivityChecker = Optional.ofNullable(peer.getIce().getConnectivityChecker());
184+
p.averageRtt.set(connectivityChecker.map(PeerConnectivityCheckerModule::getAverageRTT).orElse(-1.0f).intValue());
185+
p.lastReceived.set(connectivityChecker.map(PeerConnectivityCheckerModule::getLastPacketReceived).map(last -> System.currentTimeMillis() - last).orElse(-1L).intValue());
186+
p.echosReceived.set(connectivityChecker.map(PeerConnectivityCheckerModule::getEchosReceived).orElse(-1L).intValue());
185187
});
186188
}
187-
}).start();
189+
});
188190
}
189191

190192
private void runOnUIThread(Runnable runnable) {
@@ -210,6 +212,7 @@ public static class DebugPeer {
210212
public SimpleStringProperty state = new SimpleStringProperty("");
211213
public SimpleIntegerProperty averageRtt = new SimpleIntegerProperty(-1);
212214
public SimpleIntegerProperty lastReceived = new SimpleIntegerProperty(-1);
215+
public SimpleIntegerProperty echosReceived = new SimpleIntegerProperty(-1);
213216
public SimpleStringProperty localCandidate = new SimpleStringProperty("");
214217
public SimpleStringProperty remoteCandidate = new SimpleStringProperty("");
215218

@@ -269,6 +272,12 @@ public SimpleIntegerProperty lastReceivedProperty() {
269272
return lastReceived;
270273
}
271274

275+
public int getEchosReceived() {
276+
return echosReceived.get();
277+
}
278+
279+
public SimpleIntegerProperty echosReceivedProperty() { return echosReceived; }
280+
272281
public String getLocalCandidate() {
273282
return localCandidate.get();
274283
}

ice-adapter/src/main/java/com/faforever/iceadapter/debug/DebugWindowController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class DebugWindowController {
3636
public TableColumn stateColumn;
3737
public TableColumn rttColumn;
3838
public TableColumn lastColumn;
39+
public TableColumn echosRcvColumn;
3940
public TableColumn localCandColumn;
4041
public TableColumn remoteCandColumn;
4142

@@ -64,6 +65,7 @@ private void initialize() {
6465
stateColumn.setCellValueFactory(new PropertyValueFactory<>("state"));
6566
rttColumn.setCellValueFactory(new PropertyValueFactory<>("averageRtt"));
6667
lastColumn.setCellValueFactory(new PropertyValueFactory<>("lastReceived"));
68+
echosRcvColumn.setCellValueFactory(new PropertyValueFactory<>("echosReceived"));
6769
localCandColumn.setCellValueFactory(new PropertyValueFactory<>("localCandidate"));
6870
remoteCandColumn.setCellValueFactory(new PropertyValueFactory<>("remoteCandidate"));
6971

ice-adapter/src/main/java/com/faforever/iceadapter/ice/PeerConnectivityCheckerModule.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class PeerConnectivityCheckerModule {
2323

2424
@Getter private float averageRTT = 0.0f;
2525
@Getter private long lastPacketReceived;
26+
@Getter private long echosReceived = 0;
2627

2728
public PeerConnectivityCheckerModule(PeerIceModule ice) {
2829
this.ice = ice;
@@ -56,7 +57,7 @@ synchronized void stop() {
5657
running = false;
5758

5859
if (checkerThread != null) {
59-
checkerThread.stop();
60+
checkerThread.interrupt();
6061
checkerThread = null;
6162
}
6263
}
@@ -68,6 +69,8 @@ synchronized void stop() {
6869
* @param length
6970
*/
7071
void echoReceived(byte[] data, int offset, int length) {
72+
echosReceived++;
73+
7174
if (length != 9) {
7275
log.trace("Received echo of wrong length, length: {}", length);
7376
}
@@ -86,7 +89,7 @@ void echoReceived(byte[] data, int offset, int length) {
8689
}
8790

8891
private void checkerThread() {
89-
while (running) {
92+
while (!Thread.currentThread().isInterrupted()) {
9093
log.trace("Running connectivity checker");
9194

9295
byte[] data = new byte[9];
@@ -102,7 +105,9 @@ private void checkerThread() {
102105
try {
103106
Thread.sleep(ECHO_INTERVAL);
104107
} catch (InterruptedException e) {
105-
log.warn("Sleeping checkerThread was interrupted");
108+
log.warn("{} (sleeping checkerThread) was interrupted", Thread.currentThread().getName());
109+
Thread.currentThread().interrupt();
110+
return;
106111
}
107112

108113
if (System.currentTimeMillis() - lastPacketReceived > 10000) {
@@ -112,6 +117,6 @@ private void checkerThread() {
112117
}
113118
}
114119

115-
log.info(getThreadName()+" stopped gracefully");
120+
log.info("{} stopped gracefully", Thread.currentThread().getName());
116121
}
117122
}

ice-adapter/src/main/resources/debugWindow.fxml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
<TableColumn fx:id="offerColumn" prefWidth="100.0" text="localOffer" />
6363
<TableColumn fx:id="rttColumn" prefWidth="100.0" text="average rtt" />
6464
<TableColumn fx:id="lastColumn" prefWidth="100.0" text="last recv" />
65+
<TableColumn fx:id="echosRcvColumn" prefWidth="100.0" text="echos recv" />
6566
</columns>
6667
</TableView>
6768

0 commit comments

Comments
 (0)