Exemplo n.º 1
0
        public NetworkNode configureNode()
        {
            List <NodeInput>  ports          = new List <NodeInput>();
            string            nodeName       = null;
            string            nodeType       = null;
            ManagementPort    managementPort = null;
            NetworkNodeSender sender         = null;

            while (configReader.Read())
            {
                if (configReader.IsStartElement())
                {
                    if (configReader.NodeType == XmlNodeType.Element)
                    {
                        if (configReader.Name == "port")
                        {
                            int    portNumber = int.Parse(configReader.GetAttribute("local"));
                            int    tcp        = int.Parse(configReader.GetAttribute("tcp"));
                            string stm        = configReader.GetAttribute("stm");

                            ports.Add(new NodeInput(tcp, portNumber, StmLevelExt.GetContainer(stm)));
                        }
                        else if (configReader.Name == "cloud-server")
                        {
                            int tcp = int.Parse(configReader.GetAttribute("tcp"));
                            sender = new NetworkNodeSender(tcp);
                        }
                        else if (configReader.Name == "managment-port")
                        {
                            int portNumber = int.Parse(configReader.GetAttribute("number"));
                            managementPort = new ManagementPort(portNumber);
                        }
                        else if (configReader.Name == "node" && configReader.IsStartElement())
                        {
                            nodeName = configReader.GetAttribute("name");
                            nodeType = configReader.GetAttribute("type");
                        }
                    }
                }
            }

            SynchronousPhysicalInterface spi = new SynchronousPhysicalInterface(ports, sender, nodeName);
            TransportTerminalFunction    ttf = new TransportTerminalFunction(spi, getMode(nodeType));
            HigherOrderPathConnection    hpc = new HigherOrderPathConnection(ttf);
            NetworkNode node = new NetworkNode(hpc, ttf, nodeName);

            ManagementCenter managementCenter = new ManagementCenter(managementPort, node);

            managementPort.SetManagementCenter(managementCenter);
            managementPort.StartListening();
            foreach (NodeInput input in ports)
            {
                input.SetUpServer(10000, 10);
                input.StartListening();
            }

            return(node);
        }
Exemplo n.º 2
0
        public static void Main(string[] args)
        {
            string filename = "";
            string logs     = "";

            try
            {
                LOG.Trace($"Args: {string.Join(", ", args)}");
                if (args[0] == "-c")
                {
                    filename = args[1];
                }
                if (args[2] == "-l")
                {
                    logs = args[3];
                }
                else
                {
                    LOG.Warn("Use '-c <filename> -l <log_filename>' to pass a config file to program and set where logs should be");
                }
            }
            catch (IndexOutOfRangeException)
            {
                LOG.Warn("Use '-c <filename> -l <log_filename>' to pass a config file to program and set where logs should be");
                LOG.Warn("Using MockConfigurationParser instead");
            }

            IConfigurationParser configurationParser;

            if (string.IsNullOrWhiteSpace(filename))
            {
                configurationParser = new MockConfigurationParser();
            }
            else
            {
                configurationParser = new XmlConfigurationParser(filename);
            }

            Configuration configuration = configurationParser.ParseConfiguration();

            LoggingConfiguration config        = new LoggingConfiguration();
            ColoredConsoleTarget consoleTarget = new ColoredConsoleTarget
            {
                Name   = "console",
                Layout = "[${time} | ${level:format=FirstCharacter} | ${logger}] ${message}"
            };
            FileTarget fileTarget = new FileTarget
            {
                FileName = logs + "/NetworkNode_" + configuration.RouterAlias + ".log",
                DeleteOldFileOnStartup = true,
                Layout = "[${time} | ${level:format=FirstCharacter} | ${logger}] ${message}"
            };

            config.AddRule(LogLevel.Trace, LogLevel.Fatal, consoleTarget);
            config.AddRule(LogLevel.Debug, LogLevel.Fatal, fileTarget);
            LogManager.Configuration = config;

            IPacketForwarder packetForwarder = new MplsPacketForwarder(configuration);
            //IPacketForwarder packetForwarder = new MockPacketForwarder(configuration);
            IPort <ManagementPacket> managementPort     = new ManagementPort(configuration);
            IClientPortFactory       clientPortFactory  = new ClientPortFactory(configuration);
            INetworkNodeManager      networkNodeManager = new NetworkNodeManager(configuration, packetForwarder, managementPort, clientPortFactory);

            try
            {
                Console.Title = configuration.RouterAlias;
            }
            catch (Exception)
            {
                LOG.Trace("Could not set the title");
            }

            networkNodeManager.Start();
        }
Exemplo n.º 3
0
 public ManagementCenter(ManagementPort managementPort, NetworkNode node)
 {
     this.node           = node;
     this.managementPort = managementPort;
 }