add some methods used by api

This commit is contained in:
Jürg Schulthess 2025-05-24 22:07:01 +02:00
parent 952764d908
commit 9706ed166a
2 changed files with 43 additions and 21 deletions

View File

@ -599,9 +599,10 @@ public class RNSNetwork {
return activePeers; return activePeers;
} }
public List<RNSPeer> getImmutableLinkedPeers() { // note: we already have a lobok getter for this
return this.immutableLinkedPeers; //public List<RNSPeer> getImmutableLinkedPeers() {
} // return this.immutableLinkedPeers;
//}
public void addLinkedPeer(RNSPeer peer) { public void addLinkedPeer(RNSPeer peer) {
this.linkedPeers.add(peer); this.linkedPeers.add(peer);
@ -615,16 +616,17 @@ public class RNSNetwork {
if (nonNull(peer.getPeerLink())) { if (nonNull(peer.getPeerLink())) {
peer.getPeerLink().teardown(); peer.getPeerLink().teardown();
} }
this.linkedPeers.remove(this.linkedPeers.indexOf(peer)); // thread safe var p = this.linkedPeers.remove(this.linkedPeers.indexOf(peer)); // thread safe
this.immutableLinkedPeers = List.copyOf(this.linkedPeers); this.immutableLinkedPeers = List.copyOf(this.linkedPeers);
} }
public List<RNSPeer> getLinkedPeers() { // note: we already have a lobok getter for this
//synchronized(this.linkedPeers) { //public List<RNSPeer> getLinkedPeers() {
//return new ArrayList<>(this.linkedPeers); // //synchronized(this.linkedPeers) {
return this.linkedPeers; // //return new ArrayList<>(this.linkedPeers);
// return this.linkedPeers;
// //}
//} //}
}
public void addIncomingPeer(RNSPeer peer) { public void addIncomingPeer(RNSPeer peer) {
this.incomingPeers.add(peer); this.incomingPeers.add(peer);
@ -635,17 +637,17 @@ public class RNSNetwork {
if (nonNull(peer.getPeerLink())) { if (nonNull(peer.getPeerLink())) {
peer.getPeerLink().teardown(); peer.getPeerLink().teardown();
} }
this.incomingPeers.remove(this.incomingPeers.indexOf(peer)); var p = this.incomingPeers.remove(this.incomingPeers.indexOf(peer));
this.immutableIncomingPeers = List.copyOf(this.incomingPeers); this.immutableIncomingPeers = List.copyOf(this.incomingPeers);
} }
public List<RNSPeer> getIncomingPeers() { // note: we already have a lobok getter for this
return this.incomingPeers; //public List<RNSPeer> getIncomingPeers() {
} // return this.incomingPeers;
//}
public List<RNSPeer> getImmutableIncomingPeers() { //public List<RNSPeer> getImmutableIncomingPeers() {
return this.immutableIncomingPeers; // return this.immutableIncomingPeers;
} //}
// TODO, methods for: getAvailablePeer // TODO, methods for: getAvailablePeer
@ -813,6 +815,14 @@ public class RNSNetwork {
return Settings.getInstance().isTestNet() ? TESTNET_MESSAGE_MAGIC : MAINNET_MESSAGE_MAGIC; return Settings.getInstance().isTestNet() ? TESTNET_MESSAGE_MAGIC : MAINNET_MESSAGE_MAGIC;
} }
public String getOurNodeId() {
return this.serverIdentity.toString();
}
protected byte[] getOurPublicKey() {
return this.serverIdentity.getPublicKey();
}
// Network methods Reticulum implementation // Network methods Reticulum implementation
/** Builds either (legacy) HeightV2Message or (newer) BlockSummariesV2Message, depending on peer version. /** Builds either (legacy) HeightV2Message or (newer) BlockSummariesV2Message, depending on peer version.

View File

@ -116,6 +116,7 @@ public class RNSPeer {
private LinkedBlockingQueue<Message> pendingMessages; private LinkedBlockingQueue<Message> pendingMessages;
private boolean syncInProgress = false; private boolean syncInProgress = false;
private RNSPeerData peerData = null; private RNSPeerData peerData = null;
private long linkEstablishedTime = -1L; // equivalent of (tcpip) Peer 'handshakeComplete'
// Versioning // Versioning
public static final Pattern VERSION_PATTERN = Pattern.compile(Controller.VERSION_PREFIX public static final Pattern VERSION_PATTERN = Pattern.compile(Controller.VERSION_PREFIX
+ "(\\d{1,3})\\.(\\d{1,5})\\.(\\d{1,5})"); + "(\\d{1,3})\\.(\\d{1,5})\\.(\\d{1,5})");
@ -281,6 +282,7 @@ public class RNSPeer {
/** Link callbacks */ /** Link callbacks */
public void linkEstablished(Link link) { public void linkEstablished(Link link) {
this.linkEstablishedTime = System.currentTimeMillis();
link.setLinkClosedCallback(this::linkClosed); link.setLinkClosedCallback(this::linkClosed);
log.info("peerLink {} established (link: {}) with peer: hash - {}, link destination hash: {}", log.info("peerLink {} established (link: {}) with peer: hash - {}, link destination hash: {}",
encodeHexString(peerLink.getLinkId()), encodeHexString(link.getLinkId()), encodeHexString(destinationHash), encodeHexString(peerLink.getLinkId()), encodeHexString(link.getLinkId()), encodeHexString(destinationHash),
@ -374,7 +376,7 @@ public class RNSPeer {
//log.info("***> creating message from {} bytes", data.length); //log.info("***> creating message from {} bytes", data.length);
Message message = Message.fromByteBuffer(bb); Message message = Message.fromByteBuffer(bb);
//log.info("*=> type {} message received ({} bytes): {}", message.getType(), data.length, message); //log.info("*=> type {} message received ({} bytes): {}", message.getType(), data.length, message);
log.info("*=> type {} message received ({} bytes, id: {}", message.getType(), data.length, message.getId()); log.info("*=> type {} message received ({} bytes, id: {})", message.getType(), data.length, message.getId());
// Handle message based on type // Handle message based on type
switch (message.getType()) { switch (message.getType()) {
@ -565,8 +567,6 @@ public class RNSPeer {
/** Utility methods */ /** Utility methods */
public void pingRemote() { public void pingRemote() {
var link = this.peerLink; var link = this.peerLink;
//if (nonNull(link) & (isFalse(link.isInitiator()))) {
//if (nonNull(link) & link.isInitiator()) {
if (nonNull(link)) { if (nonNull(link)) {
if (peerLink.getStatus() == ACTIVE) { if (peerLink.getStatus() == ACTIVE) {
log.info("pinging remote (direct, 1 packet): {}", encodeHexString(link.getLinkId())); log.info("pinging remote (direct, 1 packet): {}", encodeHexString(link.getLinkId()));
@ -879,4 +879,16 @@ public class RNSPeer {
public List<byte[]> getPendingSignatureRequests() { public List<byte[]> getPendingSignatureRequests() {
return this.pendingSignatureRequests; return this.pendingSignatureRequests;
} }
// Details used by API
public long getConnectionEstablishedTime() {
return linkEstablishedTime;
}
public long getConnectionAge() {
if (linkEstablishedTime > 0L) {
return System.currentTimeMillis() - linkEstablishedTime;
}
return linkEstablishedTime;
}
} }