forked from Qortal/qortal
Extracted Server classes into ChainableServer in order offer foreign blockchain server information to the Core API. They were not extracted into the ServerConfigurationInfo class as stated in a recent commit.
This commit is contained in:
parent
7e509f27fb
commit
46a9075faf
47
src/main/java/org/qortal/api/resource/CrossChainUtils.java
Normal file
47
src/main/java/org/qortal/api/resource/CrossChainUtils.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package org.qortal.api.resource;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import org.qortal.crosschain.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class CrossChainUtils {
|
||||||
|
private static final Logger LOGGER = LogManager.getLogger(CrossChainUtils.class);
|
||||||
|
|
||||||
|
public static ServerConfigurationInfo buildServerConfigurationInfo(Bitcoiny blockchain) {
|
||||||
|
|
||||||
|
BitcoinyBlockchainProvider blockchainProvider = blockchain.getBlockchainProvider();
|
||||||
|
ChainableServer currentServer = blockchainProvider.getCurrentServer();
|
||||||
|
|
||||||
|
return new ServerConfigurationInfo(
|
||||||
|
buildInfos(blockchainProvider.getServers(), currentServer),
|
||||||
|
buildInfos(blockchainProvider.getRemainingServers(), currentServer),
|
||||||
|
buildInfos(blockchainProvider.getUselessServers(), currentServer)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ServerInfo buildInfo(ChainableServer server, boolean isCurrent) {
|
||||||
|
return new ServerInfo(
|
||||||
|
server.averageResponseTime(),
|
||||||
|
server.getHostName(),
|
||||||
|
server.getPort(),
|
||||||
|
server.getConnectionType().toString(),
|
||||||
|
isCurrent);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<ServerInfo> buildInfos(Collection<ChainableServer> servers, ChainableServer currentServer) {
|
||||||
|
|
||||||
|
List<ServerInfo> infos = new ArrayList<>( servers.size() );
|
||||||
|
|
||||||
|
for( ChainableServer server : servers )
|
||||||
|
{
|
||||||
|
infos.add(buildInfo(server, server.equals(currentServer)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return infos;
|
||||||
|
}
|
||||||
|
}
|
15
src/main/java/org/qortal/crosschain/ChainableServer.java
Normal file
15
src/main/java/org/qortal/crosschain/ChainableServer.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package org.qortal.crosschain;
|
||||||
|
|
||||||
|
public interface ChainableServer {
|
||||||
|
public void addResponseTime(long responseTime);
|
||||||
|
|
||||||
|
public long averageResponseTime();
|
||||||
|
|
||||||
|
public String getHostName();
|
||||||
|
|
||||||
|
public int getPort();
|
||||||
|
|
||||||
|
public ConnectionType getConnectionType();
|
||||||
|
|
||||||
|
public enum ConnectionType {TCP, SSL}
|
||||||
|
}
|
74
src/main/java/org/qortal/crosschain/ServerInfo.java
Normal file
74
src/main/java/org/qortal/crosschain/ServerInfo.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package org.qortal.crosschain;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
public class ServerInfo {
|
||||||
|
|
||||||
|
private long averageResponseTime;
|
||||||
|
|
||||||
|
private String hostName;
|
||||||
|
|
||||||
|
private int port;
|
||||||
|
|
||||||
|
private String connectionType;
|
||||||
|
|
||||||
|
private boolean isCurrent;
|
||||||
|
|
||||||
|
public ServerInfo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerInfo(long averageResponseTime, String hostName, int port, String connectionType, boolean isCurrent) {
|
||||||
|
this.averageResponseTime = averageResponseTime;
|
||||||
|
this.hostName = hostName;
|
||||||
|
this.port = port;
|
||||||
|
this.connectionType = connectionType;
|
||||||
|
this.isCurrent = isCurrent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getAverageResponseTime() {
|
||||||
|
return averageResponseTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHostName() {
|
||||||
|
return hostName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPort() {
|
||||||
|
return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getConnectionType() {
|
||||||
|
return connectionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCurrent() {
|
||||||
|
return isCurrent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
ServerInfo that = (ServerInfo) o;
|
||||||
|
return averageResponseTime == that.averageResponseTime && port == that.port && isCurrent == that.isCurrent && Objects.equals(hostName, that.hostName) && Objects.equals(connectionType, that.connectionType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(averageResponseTime, hostName, port, connectionType, isCurrent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ServerInfo{" +
|
||||||
|
"averageResponseTime=" + averageResponseTime +
|
||||||
|
", hostName='" + hostName + '\'' +
|
||||||
|
", port=" + port +
|
||||||
|
", connectionType='" + connectionType + '\'' +
|
||||||
|
", isCurrent=" + isCurrent +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user