public PortableData Create() { // 1. Decrypt stream ExportDataEncryptor decryptor = new ExportDataEncryptor(dataStream); MemoryStream decrypted = new MemoryStream(); decryptor.Decrypt(decrypted); decrypted.Position = 0; // 2. Decompress stream ExportDataCompressor decompressor = new ExportDataCompressor(decrypted); MemoryStream decompressed = new MemoryStream(); decompressor.Decompress(decompressed); decompressed.Position = 0; // 3. Deserialize stream PsaTracesSerializer deserializer = new PsaTracesSerializer(); PortableData result = deserializer.Deserialize(decompressed); return(result); }
/// <summary> /// Deserialization /// </summary> /// <param name="root"></param> /// <param name="result"></param> private void ReadTraces(XElement root, PortableData result) { IEnumerable <XElement> traceElements = root.Element(PsaTracesName).Elements(TraceName); foreach (XElement traceElement in traceElements) { PsaTrace trace = ReadTraceElement(traceElement); result.PsaTraces.Add(trace); } }
public PortableData Deserialize(Stream stream) { PortableData result = new PortableData(); XDocument doc = XDocument.Load(stream); XElement root = doc.Root; XElement header = root.Element(HeaderName); DateTime dt; DateTime.TryParse(header.Element(DateName).Value, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); result.Date = dt; result.Guid = Guid.Parse(header.Element(GuidName).Value); result.Version = new Version(header.Element(VersionName).Value); ReadTraces(root, result); return(result); }