@@ -43,7 +43,7 @@ public class DebugWindow extends Application implements Debugger {
4343 private static final int WIDTH = 1200 ;
4444 private static final int HEIGHT = 700 ;
4545
46- private ObservableList <DebugPeer > peers = FXCollections .observableArrayList ();
46+ private final ObservableList <DebugPeer > peers = FXCollections .observableArrayList ();
4747
4848
4949 @ Override
@@ -89,6 +89,7 @@ public void start(Stage stage) {
8989 public void showWindow () {
9090 runOnUIThread (() -> stage .show ());
9191 initStaticVariables ();
92+ initPeers ();
9293 }
9394
9495 @ Override
@@ -107,6 +108,20 @@ public void initStaticVariables() {
107108 });
108109 }
109110
111+ public void initPeers () {
112+ runOnUIThread (() -> {
113+ synchronized (peers ) {
114+ peers .clear ();
115+ for (Peer peer : IceAdapter .gameSession .getPeers ().values ()) {
116+ DebugPeer p = new DebugPeer (peer );
117+ p .stateChangedUpdate (peer );
118+ p .connectivityUpdate (peer );
119+ peers .add (p );
120+ }
121+ }
122+ });
123+ }
124+
110125 @ Override
111126 public void rpcStarted (CompletableFuture <JJsonPeer > peerFuture ) {
112127 runOnUIThread (() -> {
@@ -143,11 +158,7 @@ public void gameStateChanged() {
143158 public void connectToPeer (int id , String login , boolean localOffer ) {
144159 new Thread (() -> {
145160 synchronized (peers ) {
146- DebugPeer peer = new DebugPeer ();
147- peer .id .set (id );
148- peer .login .set (login );
149- peer .localOffer .set (localOffer );
150- peers .add (peer );//Might callback into jfx
161+ peers .add (new DebugPeer (id , login , localOffer ));//Might callback into jfx
151162 }
152163 }).start ();
153164 }
@@ -166,10 +177,7 @@ public void peerStateChanged(Peer peer) {
166177 new Thread (() -> {
167178 synchronized (peers ) {
168179 peers .stream ().filter (p -> p .id .get () == peer .getRemoteId ()).forEach (p -> {
169- p .connected .set (peer .getIce ().isConnected ());
170- p .state .set (peer .getIce ().getIceState ().getMessage ());
171- p .localCandidate .set (Optional .ofNullable (peer .getIce ().getComponent ()).map (Component ::getSelectedPair ).map (CandidatePair ::getLocalCandidate ).map (Candidate ::getType ).map (CandidateType ::toString ).orElse ("" ));
172- p .remoteCandidate .set (Optional .ofNullable (peer .getIce ().getComponent ()).map (Component ::getSelectedPair ).map (CandidatePair ::getRemoteCandidate ).map (Candidate ::getType ).map (CandidateType ::toString ).orElse ("" ));
180+ p .stateChangedUpdate (peer );
173181 });
174182 }
175183 }).start ();
@@ -180,11 +188,7 @@ public void peerConnectivityUpdate(Peer peer) {
180188 runOnUIThread (() -> {
181189 synchronized (peers ) {
182190 peers .stream ().filter (p -> p .id .get () == peer .getRemoteId ()).forEach (p -> {
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 ());
187- p .echosReceived .set (connectivityChecker .map (PeerConnectivityCheckerModule ::getEchosReceived ).orElse (-1L ).intValue ());
191+ p .connectivityUpdate (peer );
188192 });
189193 }
190194 });
@@ -218,6 +222,16 @@ public static class DebugPeer {
218222 public SimpleStringProperty localCandidate = new SimpleStringProperty ("" );
219223 public SimpleStringProperty remoteCandidate = new SimpleStringProperty ("" );
220224
225+ public DebugPeer (Peer peer ) {
226+ this (peer .getRemoteId (), peer .getRemoteLogin (), peer .isLocalOffer ());
227+ }
228+
229+ public DebugPeer (int id , String login , boolean localOffer ) {
230+ this .id .set (id );
231+ this .login .set (login );
232+ this .localOffer .set (localOffer );
233+ }
234+
221235 public int getId () {
222236 return id .get ();
223237 }
@@ -301,5 +315,20 @@ public String getRemoteCandidate() {
301315 public SimpleStringProperty remoteCandidateProperty () {
302316 return remoteCandidate ;
303317 }
318+
319+ public void stateChangedUpdate (Peer peer ) {
320+ connected .set (peer .getIce ().isConnected ());
321+ state .set (peer .getIce ().getIceState ().getMessage ());
322+ localCandidate .set (Optional .ofNullable (peer .getIce ().getComponent ()).map (Component ::getSelectedPair ).map (CandidatePair ::getLocalCandidate ).map (Candidate ::getType ).map (CandidateType ::toString ).orElse ("" ));
323+ remoteCandidate .set (Optional .ofNullable (peer .getIce ().getComponent ()).map (Component ::getSelectedPair ).map (CandidatePair ::getRemoteCandidate ).map (Candidate ::getType ).map (CandidateType ::toString ).orElse ("" ));
324+ }
325+
326+ public void connectivityUpdate (Peer peer ) {
327+ Optional <PeerConnectivityCheckerModule > connectivityChecker = Optional .ofNullable (peer .getIce ().getConnectivityChecker ());
328+ averageRtt .set (connectivityChecker .map (PeerConnectivityCheckerModule ::getAverageRTT ).orElse (-1.0f ).intValue ());
329+ lastReceived .set (connectivityChecker .map (PeerConnectivityCheckerModule ::getLastPacketReceived ).map (last -> System .currentTimeMillis () - last ).orElse (-1L ).intValue ());
330+ echosReceived .set (connectivityChecker .map (PeerConnectivityCheckerModule ::getEchosReceived ).orElse (-1L ).intValue ());
331+ echosReceived .set (connectivityChecker .map (PeerConnectivityCheckerModule ::getEchosReceived ).orElse (-1L ).intValue ());
332+ }
304333 }
305334}
0 commit comments