Exemplo n.º 1
0
        public static ConfigNode ToConfigNode(this HarddiskFile file, string nodeName)
        {
            var node = new ConfigNode(nodeName);

            node.AddValue(FilenameValueString, file.Name);

            FileContent content = file.ReadAll();

            if (content.Category == FileCategory.KSM)
            {
                node.AddValue("line", PersistenceUtilities.EncodeBase64(content.Bytes));
            }
            else
            {
                if (SafeHouse.Config.UseCompressedPersistence)
                {
                    node.AddValue("line", EncodeBase64(content.String));
                }
                else
                {
                    node.AddValue("line", PersistenceUtilities.EncodeLine(content.String));
                }
            }
            return(node);
        }
 private void HandleValue(ConfigNode configNode, string key, object value)
 {
     if (value is Dump)
     {
         configNode.AddNode(key, ToConfigNode(key, value as Dump));
     }
     else if (value is List <object> )
     {
         configNode.AddNode(key, ToConfigNode(key, value as List <object>));
     }
     else if (value is int)
     {
         configNode.AddNode(key, ScalarToConfigNode(key, ScalarKey, Convert.ToString(value)));
     }
     else if (value is double)
     {
         configNode.AddNode(key, ScalarToConfigNode(key, ScalarKey, ((double)value).ToString("R")));
     }
     else if (value is bool)
     {
         configNode.AddNode(key, ScalarToConfigNode(key, BooleanKey, Convert.ToString(value)));
     }
     else
     {
         configNode.AddValue(key, PersistenceUtilities.EncodeLine(value.ToString()));
     }
 }
Exemplo n.º 3
0
Arquivo: CPU.cs Projeto: jenden0/KOS
        public void OnSave(ConfigNode node)
        {
            try
            {
                var contextNode = new ConfigNode("context");

                // Save variables
                if (variables.Count > 0)
                {
                    var varNode = new ConfigNode("variables");

                    foreach (var kvp in variables)
                    {
                        if (!(kvp.Value is BoundVariable) &&
                            (kvp.Value.Name.IndexOfAny(new[] { '*', '-' }) == -1))       // variables that have this characters are internal and shouldn't be persisted
                        {
                            if (kvp.Value.Value.GetType().ToString() == "System.String") // if the variable is a string, enclose the value in ""
                            {
                                varNode.AddValue(kvp.Key.TrimStart('$'), (char)34 + PersistenceUtilities.EncodeLine(kvp.Value.Value.ToString()) + (char)34);
                            }
                            else
                            {
                                varNode.AddValue(kvp.Key.TrimStart('$'), PersistenceUtilities.EncodeLine(kvp.Value.Value.ToString()));
                            }
                        }
                    }

                    contextNode.AddNode(varNode);
                }

                node.AddNode(contextNode);
            }
            catch (Exception e)
            {
                if (shared.Logger != null)
                {
                    shared.Logger.Log(e);
                }
            }
        }
Exemplo n.º 4
0
        public static ConfigNode ToConfigNode(this ProgramFile programFile, string nodeName)
        {
            var node = new ConfigNode(nodeName);

            node.AddValue(FILENAME_VALUE_STRING, programFile.Filename);

            if (programFile.Category == FileCategory.KSM)
            {
                node.AddValue("line", EncodeBase64(programFile.BinaryContent));
            }
            else
            {
                if (Config.Instance.UseCompressedPersistence)
                {
                    node.AddValue("line", EncodeBase64(programFile.StringContent));
                }
                else
                {
                    node.AddValue("line", PersistenceUtilities.EncodeLine(programFile.StringContent));
                }
            }
            return(node);
        }