public Configuration ParseConfiguration()
        {
            Configuration.Builder configurationBuilder = new Configuration.Builder();

            LOG.Debug($"Reading configuration from {_filename}");
            XElement xelement = XElement.Load(_filename);

            configurationBuilder.SetServerAddress(IPAddress.Parse((xelement.Descendants("server_address").First().Value)));
            configurationBuilder.SetConnectionRequestLocalPort(int.Parse(xelement.Descendants("ncc_connection_request_local_port").First().Value));
            configurationBuilder.SetCallCoordinationLocalPort(int.Parse(xelement.Descendants("ncc_call_coordination_local_port").First().Value));
            configurationBuilder.SetCallTeardownLocalPort(int.Parse(xelement.Descendants("ncc_call_teardown_local_port").First().Value));
            configurationBuilder.SetConnectionRequestRemotePort(int.Parse(xelement.Descendants("cc_connection_request_remote_port").First().Value));
            configurationBuilder.SetCallCoordinationRemotePort(int.Parse(xelement.Descendants("ncc_call_coordination_remote_port").First().Value));
            configurationBuilder.SetDomain(xelement.Descendants("domain").First().Value);

            foreach (XElement element in xelement.Descendants("client_port"))
            {
                LOG.Trace($"NCC: ClientName: {element.FirstAttribute.Value} ClientPortAlias: {element.Value}");
                configurationBuilder.AddClientPortAlias(element.FirstAttribute.Value, element.Value);
            }

            foreach (XElement element in xelement.Descendants("port_domain"))
            {
                LOG.Trace($"NCC: PortTemplate: {element.FirstAttribute.Value} Domain: {element.Value}");
                configurationBuilder.AddPortDomain(element.FirstAttribute.Value, element.Value);
            }

            return(configurationBuilder.Build());
        }
Beispiel #2
0
        public Configuration ParseConfiguration()
        {
            Configuration.Builder configurationBuilder = new Configuration.Builder();

            LOG.Debug($"Reading configuration from {_filename}");
            XElement xelement = XElement.Load(_filename);

            configurationBuilder.SetConnectionControllerType(xelement.Descendants("cc_type").First().Value);
            configurationBuilder.SetConnectionRequestLocalPort(
                int.Parse(xelement.Descendants("cc_connection_request_listener_local_port").First().Value));
            configurationBuilder.SetPeerCoordinationLocalPort(
                int.Parse(xelement.Descendants("cc_peer_coordination_listener_local_port").First().Value));
            configurationBuilder.SetServerAddress(IPAddress.Parse(xelement.Descendants("server_address").First().Value));
            configurationBuilder.SetRcRouteTableQueryRemotePort(int.Parse(xelement.Descendants("rc_route_table_query_remote_port").First().Value));
            configurationBuilder.SetComponentName(xelement.Descendants("component_name").First().Value);


            foreach (XElement element in xelement.Descendants("cc_name"))
            {
                LOG.Trace($"CC: PortPattern: {element.FirstAttribute.Value} CcName: {element.Value}");
                configurationBuilder.AddCcName(element.FirstAttribute.Value, element.Value);
            }

            switch (xelement.Descendants("cc_type").First().Value)
            {
            case "node":
                foreach (XElement element in xelement.Descendants("cc_peer_coordination_remote_port"))
                {
                    LOG.Trace($"CC: CcName: {element.FirstAttribute.Value} CcPeerCoordinationRemotePort: {element.Value}");
                    configurationBuilder.AddCcPeerCoordinationRemotePort(element.FirstAttribute.Value, int.Parse(element.Value));
                }

                foreach (XElement element in xelement.Descendants("lrm_remote_port"))
                {
                    LOG.Trace($"CC: LrmRemotePortAlias: {element.FirstAttribute.Value} Port: {element.Value}");
                    configurationBuilder.AddLrmRemotePort(element.FirstAttribute.Value, int.Parse(element.Value));
                }
                configurationBuilder.SetNnFibInsertRemotePort(int.Parse(xelement.Descendants("nn_fib_insert_remote_port").First().Value));
                break;

            case "domain":
                configurationBuilder.SetPeerCoordinationRemotePort(
                    int.Parse(xelement.Descendants("cc_peer_coordination_remote_port").First().Value));

                foreach (XElement element in xelement.Descendants("cc_connection_request_remote_port"))
                {
                    LOG.Trace($"CC: CcName: {element.FirstAttribute.Value} CcConnectionRequestRemotePort: {element.Value}");
                    configurationBuilder.AddCcConnectionRequestRemotePort(element.FirstAttribute.Value, int.Parse(element.Value));
                }

                break;

            case "subnetwork":
                foreach (XElement element in xelement.Descendants("cc_connection_request_remote_port"))
                {
                    LOG.Trace($"CC: CcName: {element.FirstAttribute.Value} CcConnectionRequestRemotePort: {element.Value}");
                    configurationBuilder.AddCcConnectionRequestRemotePort(element.FirstAttribute.Value, int.Parse(element.Value));
                }

                foreach (XElement element in xelement.Descendants("cc_peer_coordination_remote_port"))
                {
                    LOG.Trace($"CC: CcName: {element.FirstAttribute.Value} CcPeerCoordinationRemotePort: {element.Value}");
                    configurationBuilder.AddCcPeerCoordinationRemotePort(element.FirstAttribute.Value, int.Parse(element.Value));
                }

                foreach (XElement element in xelement.Descendants("lrm_remote_port"))
                {
                    LOG.Trace($"CC: LrmRemotePortAlias: {element.FirstAttribute.Value} Port: {element.Value}");
                    configurationBuilder.AddLrmRemotePort(element.FirstAttribute.Value, int.Parse(element.Value));
                }

                break;
            }

            return(configurationBuilder.Build());
        }