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;
}
public List<RNSPeer> getImmutableLinkedPeers() {
return this.immutableLinkedPeers;
}
// note: we already have a lobok getter for this
//public List<RNSPeer> getImmutableLinkedPeers() {
// return this.immutableLinkedPeers;
//}
public void addLinkedPeer(RNSPeer peer) {
this.linkedPeers.add(peer);
@ -615,16 +616,17 @@ public class RNSNetwork {
if (nonNull(peer.getPeerLink())) {
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);
}
public List<RNSPeer> getLinkedPeers() {
//synchronized(this.linkedPeers) {
//return new ArrayList<>(this.linkedPeers);
return this.linkedPeers;
//}
}
// note: we already have a lobok getter for this
//public List<RNSPeer> getLinkedPeers() {
// //synchronized(this.linkedPeers) {
// //return new ArrayList<>(this.linkedPeers);
// return this.linkedPeers;
// //}
//}
public void addIncomingPeer(RNSPeer peer) {
this.incomingPeers.add(peer);
@ -635,17 +637,17 @@ public class RNSNetwork {
if (nonNull(peer.getPeerLink())) {
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);
}
public List<RNSPeer> getIncomingPeers() {
return this.incomingPeers;
}
public List<RNSPeer> getImmutableIncomingPeers() {
return this.immutableIncomingPeers;
}
// note: we already have a lobok getter for this
//public List<RNSPeer> getIncomingPeers() {
// return this.incomingPeers;
//}
//public List<RNSPeer> getImmutableIncomingPeers() {
// return this.immutableIncomingPeers;
//}
// TODO, methods for: getAvailablePeer
@ -813,6 +815,14 @@ public class RNSNetwork {
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
/** 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 boolean syncInProgress = false;
private RNSPeerData peerData = null;
private long linkEstablishedTime = -1L; // equivalent of (tcpip) Peer 'handshakeComplete'
// Versioning
public static final Pattern VERSION_PATTERN = Pattern.compile(Controller.VERSION_PREFIX
+ "(\\d{1,3})\\.(\\d{1,5})\\.(\\d{1,5})");
@ -281,6 +282,7 @@ public class RNSPeer {
/** Link callbacks */
public void linkEstablished(Link link) {
this.linkEstablishedTime = System.currentTimeMillis();
link.setLinkClosedCallback(this::linkClosed);
log.info("peerLink {} established (link: {}) with peer: hash - {}, link destination hash: {}",
encodeHexString(peerLink.getLinkId()), encodeHexString(link.getLinkId()), encodeHexString(destinationHash),
@ -374,7 +376,7 @@ public class RNSPeer {
//log.info("***> creating message from {} bytes", data.length);
Message message = Message.fromByteBuffer(bb);
//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
switch (message.getType()) {
@ -565,8 +567,6 @@ public class RNSPeer {
/** Utility methods */
public void pingRemote() {
var link = this.peerLink;
//if (nonNull(link) & (isFalse(link.isInitiator()))) {
//if (nonNull(link) & link.isInitiator()) {
if (nonNull(link)) {
if (peerLink.getStatus() == ACTIVE) {
log.info("pinging remote (direct, 1 packet): {}", encodeHexString(link.getLinkId()));
@ -879,4 +879,16 @@ public class RNSPeer {
public List<byte[]> getPendingSignatureRequests() {
return this.pendingSignatureRequests;
}
// Details used by API
public long getConnectionEstablishedTime() {
return linkEstablishedTime;
}
public long getConnectionAge() {
if (linkEstablishedTime > 0L) {
return System.currentTimeMillis() - linkEstablishedTime;
}
return linkEstablishedTime;
}
}