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

us.cuatoi.s34j.service.mesh.DefaultMeshHandlers Maven / Gradle / Ivy

/*
 * Copyright (C) 2018 [email protected]
 *
 * 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 us.cuatoi.s34j.service.mesh;


import org.springframework.beans.factory.annotation.Autowired;
import us.cuatoi.s34j.service.mesh.bo.Latencies;
import us.cuatoi.s34j.service.mesh.bo.Mesh;
import us.cuatoi.s34j.service.mesh.bo.Node;
import us.cuatoi.s34j.service.mesh.providers.NodeProvider;

import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;

/**
 * Provide some default handler to get mesh information
 */
public class DefaultMeshHandlers {
    @Autowired
    private NodeProvider nodeProvider;
    @Autowired
    private MeshManager meshManager;

    /**
     * Provide node information
     *
     * @param name of the node
     * @return node information including: services, name, url
     */
    @MeshServiceHandler("getNodeInfo")
    public Node getNodeInfo(String name) {
        Node currentNode = nodeProvider.provide();
        return equalsIgnoreCase(name, currentNode.getName()) ? currentNode : null;
    }

    /**
     * Provide mesh information
     *
     * @param name of the mesh
     * @return all mesh information
     */
    @MeshServiceHandler("getMeshInfo")
    public Mesh getMeshInfo(String name) {
        Mesh currentMesh = meshManager.getMesh();
        return equalsIgnoreCase(name, currentMesh.getName()) ? currentMesh : null;
    }

    /**
     * Provide latencies information in the node
     *
     * @param name of the node
     * @return known latencies and exchange latencies
     */
    @MeshServiceHandler("getLatencies")
    public Latencies getLatencies(String name) {
        Node currentNode = nodeProvider.provide();
        if (!equalsIgnoreCase(name, currentNode.getName())) return null;
        Latencies latencies = new Latencies();
        latencies.setExchangeLatencies(meshManager.getExchangeLatencies());
        latencies.setKnownLatencies(meshManager.getKnownLatencies());
        return latencies;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy