forked from Qortal-Forker/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:
		
							
								
								
									
										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 +
 | 
			
		||||
                        '}';
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user