40
40
import java .util .HashSet ;
41
41
import java .util .List ;
42
42
import java .util .Set ;
43
- import java .util .stream .Collectors ;
44
43
45
44
import org .apache .commons .lang3 .exception .ExceptionUtils ;
46
45
64
63
import monero .common .TaskLooper ;
65
64
import monero .daemon .MoneroDaemonRpc ;
66
65
import monero .daemon .model .MoneroDaemonInfo ;
67
- import monero .daemon .model .MoneroPeer ;
68
66
69
67
@ Slf4j
70
68
@ Singleton
@@ -85,9 +83,9 @@ public final class XmrConnectionService {
85
83
private final XmrLocalNode xmrLocalNode ;
86
84
private final MoneroConnectionManager connectionManager ;
87
85
private final EncryptedConnectionList connectionList ;
88
- private final ObjectProperty <List <MoneroPeer >> peers = new SimpleObjectProperty <>();
86
+ private final ObjectProperty <List <MoneroRpcConnection >> connections = new SimpleObjectProperty <>();
87
+ private final IntegerProperty numConnections = new SimpleIntegerProperty (0 );
89
88
private final ObjectProperty <MoneroRpcConnection > connectionProperty = new SimpleObjectProperty <>();
90
- private final IntegerProperty numPeers = new SimpleIntegerProperty (0 );
91
89
private final LongProperty chainHeight = new SimpleLongProperty (0 );
92
90
private final DownloadListener downloadListener = new DownloadListener ();
93
91
@ Getter
@@ -390,20 +388,20 @@ public Long getTargetHeight() {
390
388
391
389
// ----------------------------- APP METHODS ------------------------------
392
390
393
- public ReadOnlyIntegerProperty numPeersProperty () {
394
- return numPeers ;
391
+ public ReadOnlyIntegerProperty numConnectionsProperty () {
392
+ return numConnections ;
395
393
}
396
394
397
- public ReadOnlyObjectProperty <List <MoneroPeer >> peerConnectionsProperty () {
398
- return peers ;
395
+ public ReadOnlyObjectProperty <List <MoneroRpcConnection >> connectionsProperty () {
396
+ return connections ;
399
397
}
400
398
401
399
public ReadOnlyObjectProperty <MoneroRpcConnection > connectionProperty () {
402
400
return connectionProperty ;
403
401
}
404
402
405
403
public boolean hasSufficientPeersForBroadcast () {
406
- return numPeers .get () >= getMinBroadcastConnections ();
404
+ return numConnections .get () >= getMinBroadcastConnections ();
407
405
}
408
406
409
407
public LongProperty chainHeightProperty () {
@@ -782,16 +780,15 @@ else if (lastInfo.isBusySyncing()) {
782
780
downloadListener .progress (percent , blocksLeft , null );
783
781
}
784
782
785
- // set peer connections
786
- // TODO: peers often uknown due to restricted RPC call, skipping call to get peer connections
787
- // try {
788
- // peers.set(getOnlinePeers());
789
- // } catch (Exception err) {
790
- // // TODO: peers unknown due to restricted RPC call
791
- // }
792
- // numPeers.set(peers.get().size());
793
- numPeers .set (lastInfo .getNumOutgoingConnections () + lastInfo .getNumIncomingConnections ());
794
- peers .set (new ArrayList <MoneroPeer >());
783
+ // set available connections
784
+ List <MoneroRpcConnection > availableConnections = new ArrayList <>();
785
+ for (MoneroRpcConnection connection : connectionManager .getConnections ()) {
786
+ if (Boolean .TRUE .equals (connection .isOnline ()) && Boolean .TRUE .equals (connection .isAuthenticated ())) {
787
+ availableConnections .add (connection );
788
+ }
789
+ }
790
+ connections .set (availableConnections );
791
+ numConnections .set (availableConnections .size ());
795
792
796
793
// notify update
797
794
numUpdates .set (numUpdates .get () + 1 );
@@ -821,12 +818,6 @@ else if (lastInfo.isBusySyncing()) {
821
818
}
822
819
}
823
820
824
- private List <MoneroPeer > getOnlinePeers () {
825
- return daemon .getPeers ().stream ()
826
- .filter (peer -> peer .isOnline ())
827
- .collect (Collectors .toList ());
828
- }
829
-
830
821
private boolean isFixedConnection () {
831
822
return !"" .equals (config .xmrNode ) || preferences .getMoneroNodesOption () == XmrNodes .MoneroNodesOption .CUSTOM ;
832
823
}
0 commit comments