예제 #1
0
        /// <summary>
        /// Imports a list of servers from a file.
        /// </summary>
        /// <param name="filePath">The file path.</param>
        /// <param name="register">if set to <c>true</c> the server is registered, otherwise unregistered.</param>
        public static void Import(string filePath, bool register)
        {
            Export.ListOfRegisteredServers _list = new Export.ListOfRegisteredServers();
            // read from file.
            XmlTextReader _reader     = new XmlTextReader(filePath);
            XmlSerializer _serializer = new XmlSerializer(typeof(Export.ListOfRegisteredServers), CommonDefinitions.ConfigToolSchemaUri);

            Export.ListOfRegisteredServers _servers = (Export.ListOfRegisteredServers)_serializer.Deserialize(_reader);
            _reader.Close();
            if (CommonDefinitions.IsEmpty(_servers.Server))
            {
                return;
            }
            // registers the servers.
            for (int ii = 0; ii < _servers.Server.Length; ii++)
            {
                RegisteredDotNetOpcServer server = Import(_servers.Server[ii]);
                if (register)
                {
                    server.Register();
                }
                else
                {
                    server.Unregister();
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Imports a server from an export file.
        /// </summary>
        /// <param name="serverToImport">The server to import.</param>
        /// <returns>RegisteredDotNetOpcServer.</returns>
        private static RegisteredDotNetOpcServer Import(Export.RegisteredServer serverToImport)
        {
            RegisteredDotNetOpcServer server = new RegisteredDotNetOpcServer();

            // assign clsid if none specified.
            if (String.IsNullOrEmpty(serverToImport.Clsid))
            {
                server.CLSID = Utils.CLSIDFromProgID(serverToImport.ProgId);
                if (server.CLSID == Guid.Empty)
                {
                    server.CLSID = Guid.NewGuid();
                }
            }
            else
            {
                server.CLSID = new Guid(serverToImport.Clsid);
            }
            // get prog id and description.
            server.ProgId      = serverToImport.ProgId;
            server.Description = serverToImport.Description;
            // parse wrapper clsid/prog id.
            try
            {
                server.WrapperCLSID = new Guid(serverToImport.WrapperClsid);
            }
            catch
            {
                server.WrapperCLSID = Utils.CLSIDFromProgID(serverToImport.WrapperClsid);
            }
            // parse wrapped server clsid/prog id.
            try
            {
                server.ServerCLSID = new Guid(serverToImport.ServerClsid);
            }
            catch
            {
                server.ServerCLSID = Utils.CLSIDFromProgID(serverToImport.ServerClsid);
            }
            // read parameters.
            server.Parameters.Clear();
            if (!CommonDefinitions.IsEmpty(serverToImport.Parameter))
            {
                for (int ii = 0; ii < serverToImport.Parameter.Length; ii++)
                {
                    Export.Parameter parameter = serverToImport.Parameter[ii];
                    if (parameter != null && !String.IsNullOrEmpty(parameter.Name))
                    {
                        server.Parameters.Add(parameter.Name, parameter.Value);
                    }
                }
            }
            // return new server.
            return(server);
        }