A node manager for a server that exposes several variables.
Inheritance: ComClientNodeManager
Example #1
0
        /// <summary>
        /// Creates the node managers for the server.
        /// </summary>
        /// <remarks>
        /// This method allows the sub-class create any additional node managers which it uses. The SDK
        /// always creates a CoreNodeManager which handles the built-in nodes defined by the specification.
        /// Any additional NodeManagers are expected to handle application specific nodes.
        /// </remarks>
        protected override MasterNodeManager CreateMasterNodeManager(IServerInternal server, ApplicationConfiguration configuration)
        {
            List <INodeManager> nodeManagers = new List <INodeManager>();

            m_availableLocales = new List <string>();

            // get the configuration for the wrapper.
            ComWrapperServerConfiguration wrapperConfiguration = configuration.ParseExtension <ComWrapperServerConfiguration>();

            if (wrapperConfiguration != null && wrapperConfiguration.WrappedServers != null)
            {
                // create a new node manager for each wrapped COM server.
                bool loadTypeModel = true;
                Dictionary <string, ComClientConfiguration> namespaceUris = new Dictionary <string, ComClientConfiguration>();

                foreach (ComClientConfiguration clientConfiguration in wrapperConfiguration.WrappedServers)
                {
                    // add the available locales.
                    if (clientConfiguration.AvailableLocales != null && clientConfiguration.AvailableLocales.Count > 0)
                    {
                        foreach (string locale in clientConfiguration.AvailableLocales)
                        {
                            try
                            {
                                CultureInfo culture = CultureInfo.GetCultureInfo(locale);

                                if (!m_availableLocales.Contains(culture.Name))
                                {
                                    m_availableLocales.Add(culture.Name);
                                }
                            }
                            catch (Exception e)
                            {
                                Utils.Trace(e, "Can't process an invalid locale: {0}.", locale);
                            }
                        }
                    }

                    string namespaceUri = clientConfiguration.ServerUrl;

                    if (clientConfiguration is ComDaClientConfiguration)
                    {
                        namespaceUri += "/DA";

                        if (namespaceUris.ContainsKey(namespaceUri))
                        {
                            Utils.Trace("COM server has already been wrapped {0}.", namespaceUri);
                            continue;
                        }

                        namespaceUris.Add(namespaceUri, clientConfiguration);

                        ComDaClientNodeManager manager = new ComDaClientNodeManager(
                            server,
                            namespaceUri,
                            (ComDaClientConfiguration)clientConfiguration,
                            loadTypeModel);

                        nodeManagers.Add(manager);
                        loadTypeModel = false;
                        continue;
                    }

                    if (clientConfiguration is ComAeClientConfiguration)
                    {
                        namespaceUri += "/AE";

                        if (namespaceUris.ContainsKey(namespaceUri))
                        {
                            Utils.Trace("COM server has already been wrapped {0}.", namespaceUri);
                            continue;
                        }

                        namespaceUris.Add(namespaceUri, clientConfiguration);

                        ComAeClientNodeManager manager = new ComAeClientNodeManager(
                            server,
                            namespaceUri,
                            (ComAeClientConfiguration)clientConfiguration,
                            loadTypeModel);

                        nodeManagers.Add(manager);
                        loadTypeModel = false;
                        continue;
                    }

                    if (clientConfiguration is ComHdaClientConfiguration)
                    {
                        namespaceUri += "/HDA";

                        if (namespaceUris.ContainsKey(namespaceUri))
                        {
                            Utils.Trace("COM server has already been wrapped {0}.", namespaceUri);
                            continue;
                        }

                        namespaceUris.Add(namespaceUri, clientConfiguration);

                        ComHdaClientNodeManager manager = new ComHdaClientNodeManager(
                            server,
                            namespaceUri,
                            (ComHdaClientConfiguration)clientConfiguration,
                            loadTypeModel);

                        nodeManagers.Add(manager);
                        loadTypeModel = false;
                        continue;
                    }
                }
            }

            // create master node manager.
            return(new MasterNodeManager(server, configuration, null, nodeManagers.ToArray()));
        }
Example #2
0
        /// <summary>
        /// Creates the node managers for the server.
        /// </summary>
        /// <remarks>
        /// This method allows the sub-class create any additional node managers which it uses. The SDK
        /// always creates a CoreNodeManager which handles the built-in nodes defined by the specification.
        /// Any additional NodeManagers are expected to handle application specific nodes.
        /// </remarks>
        protected override MasterNodeManager CreateMasterNodeManager(IServerInternal server, ApplicationConfiguration configuration)
        {
            List<INodeManager> nodeManagers = new List<INodeManager>();
            m_availableLocales = new List<string>();

            // get the configuration for the wrapper.
            ComWrapperServerConfiguration wrapperConfiguration = configuration.ParseExtension<ComWrapperServerConfiguration>();

            if (wrapperConfiguration != null && wrapperConfiguration.WrappedServers != null)
            {
                // create a new node manager for each wrapped COM server.
                bool loadTypeModel = true;
                Dictionary<string, ComClientConfiguration> namespaceUris = new Dictionary<string, ComClientConfiguration>();

                foreach (ComClientConfiguration clientConfiguration in wrapperConfiguration.WrappedServers)
                {
                    // add the available locales.
                    if (clientConfiguration.AvailableLocales != null && clientConfiguration.AvailableLocales.Count > 0)
                    {
                        foreach (string locale in clientConfiguration.AvailableLocales)
                        {
                            try
                            {
                                CultureInfo culture = CultureInfo.GetCultureInfo(locale);

                                if (!m_availableLocales.Contains(culture.Name))
                                {
                                    m_availableLocales.Add(culture.Name);
                                }
                            }
                            catch (Exception e)
                            {
                                Utils.Trace(e, "Can't process an invalid locale: {0}.", locale);
                            }
                        }
                    }
                    
                    string namespaceUri = clientConfiguration.ServerUrl;

                    if (clientConfiguration is ComDaClientConfiguration)
                    {
                        namespaceUri += "/DA";

                        if (namespaceUris.ContainsKey(namespaceUri))
                        {
                            Utils.Trace("COM server has already been wrapped {0}.", namespaceUri);
                            continue;
                        }

                        namespaceUris.Add(namespaceUri, clientConfiguration);

                        ComDaClientNodeManager manager = new ComDaClientNodeManager(
                            server,
                            namespaceUri,
                            (ComDaClientConfiguration)clientConfiguration,
                            loadTypeModel);

                        nodeManagers.Add(manager);
                        loadTypeModel = false;
                        continue;
                    }

                    if (clientConfiguration is ComAeClientConfiguration)
                    {
                        namespaceUri += "/AE";

                        if (namespaceUris.ContainsKey(namespaceUri))
                        {
                            Utils.Trace("COM server has already been wrapped {0}.", namespaceUri);
                            continue;
                        }
                        
                        namespaceUris.Add(namespaceUri, clientConfiguration);

                        ComAeClientNodeManager manager = new ComAeClientNodeManager(
                            server,
                            namespaceUri,
                            (ComAeClientConfiguration)clientConfiguration,
                            loadTypeModel);

                        nodeManagers.Add(manager);
                        loadTypeModel = false;
                        continue;
                    }

                    if (clientConfiguration is ComHdaClientConfiguration)
                    {
                        namespaceUri += "/HDA";

                        if (namespaceUris.ContainsKey(namespaceUri))
                        {
                            Utils.Trace("COM server has already been wrapped {0}.", namespaceUri);
                            continue;
                        }

                        namespaceUris.Add(namespaceUri, clientConfiguration);

                        ComHdaClientNodeManager manager = new ComHdaClientNodeManager(
                            server,
                            namespaceUri,
                            (ComHdaClientConfiguration)clientConfiguration,
                            loadTypeModel);

                        nodeManagers.Add(manager);
                        loadTypeModel = false;
                        continue;
                    }
                }
            }
            
            // create master node manager.
            return new MasterNodeManager(server, configuration, null, nodeManagers.ToArray());
        }