using System; using System.Collections.Generic; using System.Text; using OpenMetaverse.StructuredData; using System.IO; namespace WinGridProxy { class SettingsStore { public Dictionary MessageSessions; public Dictionary PacketSessions; public SettingsStore() { MessageSessions = new Dictionary(); PacketSessions = new Dictionary(); } public OSDMap Serialize() { OSDMap map = new OSDMap(2); OSDArray messageArray = new OSDArray(MessageSessions.Count); foreach (KeyValuePair kvp in MessageSessions) { OSDMap sessionMap = new OSDMap(2); sessionMap["Capability"] = OSD.FromString(kvp.Key); sessionMap["Capture"] = OSD.FromBoolean(kvp.Value); messageArray.Add(sessionMap); } map["message_sessions"] = messageArray; OSDArray packetArray = new OSDArray(PacketSessions.Count); foreach (KeyValuePair kvp in PacketSessions) { OSDMap sessionMap = new OSDMap(2); sessionMap["PacketName"] = OSD.FromString(kvp.Key); sessionMap["Capture"] = OSD.FromBoolean(kvp.Value); packetArray.Add(sessionMap); } map["packet_sessions"] = packetArray; return map; } public void Deserialize(OSDMap map) { if (map.ContainsKey("message_sessions")) { OSDArray messageArray = (OSDArray)map["message_sessions"]; MessageSessions = new Dictionary(messageArray.Count); for (int i = 0; i < messageArray.Count; i++) { OSDMap m = (OSDMap)messageArray[i]; MessageSessions.Add(m["Capability"].AsString(), m["Capture"].AsBoolean()); } } else { //MessageSessions = new Dictionary(); } if (map.ContainsKey("packet_sessions")) { OSDArray packetArray = (OSDArray)map["packet_sessions"]; PacketSessions = new Dictionary(packetArray.Count); for (int i = 0; i < packetArray.Count; i++) { OSDMap packetMap = (OSDMap)packetArray[i]; PacketSessions.Add(packetMap["PacketName"].AsString(), packetMap["Capture"].AsBoolean()); } } else { //PacketSessions = new Dictionary(); } } public void DeserializeFromFile(string fileName) { if(File.Exists(fileName)) { OSDMap map = (OSDMap)OSDParser.DeserializeLLSDNotation(File.ReadAllText(fileName)); this.Deserialize(map); } } public void SerializeToFile(string fileName) { File.WriteAllText(fileName, this.Serialize().ToString()); } } }