// /** // * File: NetworkApi.cs // * Author: haraldwolff // * // * This file and it's content is copyrighted by the Author and / or copyright holder. // * Any use wihtout proper permission is illegal and may lead to legal actions. // * // * // **/ using System; using ln.http.resources; using ln.skyscanner.entities; using System.Linq; using ln.types; namespace ln.skyscanner.http { public class NetworkApi : JsonCallResource { public GlobalNetwork GlobalNetwork => SkyScanner.Instance.Entities.GlobalNetwork; public NetworkApi(SkyScannerHttpApi container) :base(container,"network") { } [Callable] public Node[] GetNodes() { return GlobalNetwork.Nodes.ToArray(); } [Callable] public Node[] GetNeighbors(string pid) { Guid persistenceID = Guid.Parse(pid); return GlobalNetwork.FindNeighbors(GlobalNetwork.GetNode(persistenceID)).ToArray(); } [Callable] public Node[] GetHostsInSubnet(string _cidr) { CIDR cidr = CIDR.Parse(_cidr); return GlobalNetwork.FindHostsInSubnet(cidr).ToArray(); } [Callable] public HopMap.HopNode[] GetHopTable() { HopMap hopMap = new HopMap(); foreach (Node node in GlobalNetwork.Nodes) hopMap.AddNode(node, 0); return hopMap.HopNodes; } [Callable] public HopMap.HopNode[] GetHopTable(string pid) { Guid persistenceID = Guid.Parse(pid); HopMap hopMap = new HopMap(GlobalNetwork.GetNode(persistenceID)); return hopMap.HopNodes; } } }