using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using libxmltv.Interfaces; using Enterprise.Logging; using System.Runtime.Serialization.Formatters.Binary; using System.Windows.Forms; namespace libxmltv.Core { internal class XMLTVSerializer : IXMLTVSerializer { private T data; public XMLTVSerializer(T Data) { data = Data; } #region IXMLTVSerializer members public bool Serialize(string file) { bool retVal = false; xmltv_logger.Debug.WriteLine("Serializing data to file: '{0}'", file); using (Stream stream = File.Open(file, FileMode.Create)) { retVal = Serialize(stream); } return retVal; } public bool Serialize(Stream stream) { try { xmltv_logger.Debug.WriteLine("Serializing data to stream"); BinaryFormatter bin = new BinaryFormatter(); bin.Serialize(stream, data); xmltv_logger.Debug.WriteLine("Serialized data to stream"); } catch (Exception ex) { xmltv_logger.Error.WriteLine(ex.ToString()); return false; } return true; } public T DeSerialize(string file, out bool status) { T unpacked_data = default(T); xmltv_logger.Debug.WriteLine("DeSerializing data from file: '{0}'", file); using (Stream stream = File.Open(file, FileMode.Open)) { unpacked_data = DeSerialize(stream, out status); } return unpacked_data; } public T DeSerialize(Stream stream, out bool status) { T unpacked_data = default(T); try { xmltv_logger.Debug.WriteLine("DeSerializing data from stream"); BinaryFormatter bin = new BinaryFormatter(); unpacked_data = (T)bin.Deserialize(stream); xmltv_logger.Debug.WriteLine("DeSerialized data from stream"); } catch (Exception ex) { xmltv_logger.Error.WriteLine(ex.ToString()); status = false; } status = true; return unpacked_data; } #endregion } }