/[xmltv_parser]/trunk/libxmltv/Core/XMLTVRuntimeInstance.cs
ViewVC logotype

Diff of /trunk/libxmltv/Core/XMLTVRuntimeInstance.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- trunk/libxmltv/Core/XMLTVInstance.cs	2013/03/08 03:36:44	44
+++ trunk/libxmltv/Core/XMLTVInstance.cs	2013/03/08 05:20:12	49
@@ -3,18 +3,28 @@
 using System.Linq;
 using System.Text;
 using libxmltv.Interfaces;
+using System.ComponentModel;
 
 namespace libxmltv.Core
 {
-    internal class XMLTVRuntimeInstance : MarshalByRefObject, IXMLTVRuntimeInstance, IDisposable
+    [Serializable]
+    internal class XMLTVRuntimeInstance : MarshalByRefObject, IXMLTVRuntimeInstance
     {
-        public XMLTVRuntimeInstance(string xmlfile) { CreateInstance(xmlfile); }
-        private void CreateInstance(string xmlfile) { Instance = new XMLTVInstance(xmlfile, this); }
-        internal XMLTVInstance Instance { get; private set; }
+        public XMLTVRuntimeInstance(string xmlfile) : this(xmlfile, null) { }
+        public XMLTVRuntimeInstance(string xmlfile, EventHandler<CancelEventArgs> t) { CreateInstance(xmlfile,t); }
+        private void CreateInstance(string xmlfile, EventHandler<CancelEventArgs> t)
+        {
+            CancelEvent = t;
+            using (XMLTVInstance instance = new XMLTVInstance(xmlfile, this))
+            {
+            }
+        }
+
+        //internal XMLTVInstance Instance { get; private set; }
 
         #region IXMLTV_LOADER members
         public System.IO.FileInfo XmlFile { get; set; }
-        public System.Xml.Linq.XDocument XmlDoc { get; set; }
+        public string XmlDoc { get; set; }
         #endregion
         #region IXMLTV_PARSER Members
         public IXMLTVSource Source { get; set; }
@@ -22,12 +32,42 @@
         public Dictionary<int, IXMLTVProgram> Programs { get; set; }
         #endregion   
     
-        public void Dispose()
+        internal IXMLTVSerializer<IXMLTVRuntimeInstance> Serializer
+        {
+            get 
+            {
+                return new XMLTVSerializer<IXMLTVRuntimeInstance>(this);
+            }
+        }
+        //public void Dispose()
+        //{
+        //    IsDisposing = true;
+        //    //throw new NotImplementedException();
+        //}
+        //public bool IsDisposing { get; private set; }
+
+
+        private event EventHandler<CancelEventArgs> CancelEvent = null;
+
+        public bool IsAborting
         {
-            IsDisposing = true;
-            //throw new NotImplementedException();
+            get
+            {
+                if (CancelEvent != null)
+                {
+                    CancelEventArgs e = new CancelEventArgs();
+                    CancelEvent.Invoke(this, e);
+                    if (e.Cancel)
+                    {
+                        xmltv_logger.Log.Verbose.Debug.WriteLine("Detected Instance abort event...");
+                    }
+                    return e.Cancel;
+                }
+                return false;
+            }
         }
-        public bool IsDisposing { get; private set; }
+
+
     }
 
     internal class XMLTVInstance : IDisposable

 

  ViewVC Help
Powered by ViewVC 1.1.22