All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.cloud.context.ans.SimpleAnsConfiguration Maven / Gradle / Ivy

/*
 * Copyright (C) 2018 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.alibaba.cloud.context.ans;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.cloud.context.AliCloudServerMode;
import com.alibaba.cloud.context.utils.NetUtils;
import com.alibaba.cloud.context.utils.StringUtils;

/**
 * ANS配置简单实现
 *
 * @author xiaolongzuo
 */
public class SimpleAnsConfiguration implements AnsConfiguration {

    private AliCloudServerMode serverMode = AliCloudServerMode.LOCAL;

    private String serverList = "127.0.0.1";

    private String serverPort = "8080";

    private String clientDomains;

    private float clientWeight = 1;

    private Map clientWeights = new HashMap();

    private String clientToken;

    private Map clientTokens = new HashMap();

    private String clientCluster = "DEFAULT";

    private Map clientMetadata = new HashMap<>();

    private boolean registerEnabled = true;

    private String clientIp;

    private String clientInterfaceName;

    private int clientPort = -1;

    private String env;

    private boolean secure = false;

    private Map tags = new HashMap<>();

    public SimpleAnsConfiguration() {
        this.tags.put("ANS_SERVICE_TYPE", "SPRING_CLOUD");
        this.clientIp = NetUtils.findFirstNonLoopbackAddress().getHostAddress();
    }

    public SimpleAnsConfiguration(String serverList, String serverPort) {
        this.serverList = serverList;
        this.serverPort = serverPort;
    }

    public void setServerMode(AliCloudServerMode serverMode) {
        this.serverMode = serverMode;
    }

    public void setServerList(String serverList) {
        this.serverList = serverList;
    }

    public void setServerPort(String serverPort) {
        this.serverPort = serverPort;
    }

    public void setClientDomains(String clientDomains) {
        this.clientDomains = clientDomains;
    }

    public void setClientWeight(float clientWeight) {
        this.clientWeight = clientWeight;
    }

    public void setClientWeights(Map clientWeights) {
        this.clientWeights = clientWeights;
    }

    public void setClientToken(String clientToken) {
        this.clientToken = clientToken;
    }

    public void setClientTokens(Map clientTokens) {
        this.clientTokens = clientTokens;
    }

    public void setClientCluster(String clientCluster) {
        this.clientCluster = clientCluster;
    }

    public void setClientMetadata(Map clientMetadata) {
        this.clientMetadata = clientMetadata;
    }

    public void setRegisterEnabled(boolean registerEnabled) {
        this.registerEnabled = registerEnabled;
    }

    public void setClientIp(String clientIp) {
        this.clientIp = clientIp;
    }

    public void setClientInterfaceName(String clientInterfaceName) {
        this.clientInterfaceName = clientInterfaceName;
        NetworkInterface networkInterface;
        try {
            networkInterface = NetworkInterface.getByName(clientInterfaceName);
        } catch (SocketException e) {
            throw new RuntimeException("get network interface " + clientInterfaceName + "failed.", e);
        }
        if (null == networkInterface) {
            throw new RuntimeException("no such network interface " + clientInterfaceName);
        }

        Enumeration inetAddress = networkInterface.getInetAddresses();
        while (inetAddress.hasMoreElements()) {
            InetAddress currentAddress = inetAddress.nextElement();
            if (currentAddress instanceof Inet4Address && !currentAddress.isLoopbackAddress()) {
                clientIp = currentAddress.getHostAddress();
                break;
            }
        }

        if (StringUtils.isEmpty(clientIp)) {
            throw new RuntimeException("cannot find available ip from network interface " + clientInterfaceName);
        }
    }

    public void setClientPort(int clientPort) {
        this.clientPort = clientPort;
    }

    public void setEnv(String env) {
        this.env = env;
    }

    public void setSecure(boolean secure) {
        this.secure = secure;
    }

    public void setTags(Map tags) {
        this.tags = tags;
    }

    @Override
    public AliCloudServerMode getServerMode() {
        return serverMode;
    }

    @Override
    public String getServerList() {
        return serverList;
    }

    @Override
    public String getServerPort() {
        return serverPort;
    }

    @Override
    public String getClientDomains() {
        return clientDomains;
    }

    @Override
    public float getClientWeight() {
        return clientWeight;
    }

    @Override
    public Map getClientWeights() {
        return clientWeights;
    }

    @Override
    public String getClientToken() {
        return clientToken;
    }

    @Override
    public Map getClientTokens() {
        return clientTokens;
    }

    @Override
    public String getClientCluster() {
        return clientCluster;
    }

    @Override
    public Map getClientMetadata() {
        return clientMetadata;
    }

    @Override
    public boolean isRegisterEnabled() {
        return registerEnabled;
    }

    @Override
    public String getClientIp() {
        return clientIp;
    }

    @Override
    public String getClientInterfaceName() {
        return clientInterfaceName;
    }

    @Override
    public int getClientPort() {
        return clientPort;
    }

    @Override
    public String getEnv() {
        return env;
    }

    @Override
    public boolean isSecure() {
        return secure;
    }

    @Override
    public Map getTags() {
        return tags;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy