mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 23:18:17 +01:00
Refactor: move SupportedCapabilitiesMessage handling code out to a method
Return early
This commit is contained in:
parent
9821dd6271
commit
17974f3dcc
1 changed files with 51 additions and 31 deletions
|
@ -786,37 +786,9 @@ public class Connection implements HasCapabilities, Runnable, MessageListener {
|
|||
}
|
||||
|
||||
if (networkEnvelope instanceof SupportedCapabilitiesMessage) {
|
||||
Capabilities capabilities = ((SupportedCapabilitiesMessage) networkEnvelope).getSupportedCapabilities();
|
||||
if (capabilities != null) {
|
||||
if (!this.capabilities.equals(capabilities)) {
|
||||
this.capabilities.set(capabilities);
|
||||
|
||||
// Capabilities can be empty. We only check for mandatory if we get some capabilities.
|
||||
if (!this.capabilities.isEmpty() && !Capabilities.hasMandatoryCapability(this.capabilities)) {
|
||||
String senderNodeAddress = getPeersNodeAddressOptional().isPresent() ?
|
||||
getPeersNodeAddressOptional().get().getFullAddress() :
|
||||
networkEnvelope instanceof SendersNodeAddressMessage ?
|
||||
((SendersNodeAddressMessage) networkEnvelope).getSenderNodeAddress().getFullAddress() :
|
||||
"[unknown address]";
|
||||
|
||||
log.info("We close a connection because of " +
|
||||
"CloseConnectionReason.MANDATORY_CAPABILITIES_NOT_SUPPORTED " +
|
||||
"to node {}. Capabilities of old node: {}, " +
|
||||
"networkEnvelope class name={}",
|
||||
senderNodeAddress,
|
||||
this.capabilities.prettyPrint(),
|
||||
networkEnvelope.getClass().getSimpleName());
|
||||
shutDown(CloseConnectionReason.MANDATORY_CAPABILITIES_NOT_SUPPORTED);
|
||||
return;
|
||||
}
|
||||
|
||||
capabilitiesListeners.forEach(weakListener -> {
|
||||
SupportedCapabilitiesListener supportedCapabilitiesListener = weakListener.get();
|
||||
if (supportedCapabilitiesListener != null) {
|
||||
UserThread.execute(() -> supportedCapabilitiesListener.onChanged(capabilities));
|
||||
}
|
||||
});
|
||||
}
|
||||
boolean causedShutDown = handleSupportedCapabilitiesMessage(networkEnvelope);
|
||||
if (causedShutDown) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -892,4 +864,52 @@ public class Connection implements HasCapabilities, Runnable, MessageListener {
|
|||
handleException(t);
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean handleSupportedCapabilitiesMessage(NetworkEnvelope networkEnvelope) {
|
||||
Capabilities supportedCapabilities = ((SupportedCapabilitiesMessage) networkEnvelope).getSupportedCapabilities();
|
||||
if (supportedCapabilities == null || supportedCapabilities.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this.capabilities.equals(supportedCapabilities)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Capabilities.hasMandatoryCapability(supportedCapabilities)) {
|
||||
log.info("We close a connection because of " +
|
||||
"CloseConnectionReason.MANDATORY_CAPABILITIES_NOT_SUPPORTED " +
|
||||
"to node {}. Capabilities of old node: {}, " +
|
||||
"networkEnvelope class name={}",
|
||||
getSenderNodeAddressAsString(networkEnvelope),
|
||||
supportedCapabilities.prettyPrint(),
|
||||
networkEnvelope.getClass().getSimpleName());
|
||||
shutDown(CloseConnectionReason.MANDATORY_CAPABILITIES_NOT_SUPPORTED);
|
||||
return true;
|
||||
}
|
||||
|
||||
this.capabilities.set(supportedCapabilities);
|
||||
|
||||
capabilitiesListeners.forEach(weakListener -> {
|
||||
SupportedCapabilitiesListener supportedCapabilitiesListener = weakListener.get();
|
||||
if (supportedCapabilitiesListener != null) {
|
||||
UserThread.execute(() -> supportedCapabilitiesListener.onChanged(supportedCapabilities));
|
||||
}
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private NodeAddress getSenderNodeAddress(NetworkEnvelope networkEnvelope) {
|
||||
return getPeersNodeAddressOptional().isPresent() ?
|
||||
getPeersNodeAddressOptional().get() :
|
||||
networkEnvelope instanceof SendersNodeAddressMessage ?
|
||||
((SendersNodeAddressMessage) networkEnvelope).getSenderNodeAddress() :
|
||||
null;
|
||||
}
|
||||
|
||||
private String getSenderNodeAddressAsString(NetworkEnvelope networkEnvelope) {
|
||||
NodeAddress nodeAddress = getSenderNodeAddress(networkEnvelope);
|
||||
return nodeAddress == null ? "null" : nodeAddress.getFullAddress();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue