/[RomCheater]/trunk/RomCheater/Serialization/SerializationReader.cs
ViewVC logotype

Diff of /trunk/RomCheater/Serialization/SerializationReader.cs

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

revision 401 by william, Thu Jun 21 05:14:38 2012 UTC revision 402 by william, Thu Jun 21 06:30:33 2012 UTC
# Line 2  Line 2 
2  using System.Collections.Generic;  using System.Collections.Generic;
3  using System.Linq;  using System.Linq;
4  using System.Text;  using System.Text;
5    using System.IO;
6    
7  namespace RomCheater.Serialization  namespace RomCheater.Serialization
8  {  {
9      public class SerializationReader      public abstract class SerializationReader : ISerializationResultCount, IDisposable
10      {      {
11            private const string DEFAULT_FOLDER = "tmp";
12            private const string DEFAULT_FILENAME = "SerializedMemoryResults.tmp";
13            private static string DEFAULT_PATH = string.Format(@"{0}\{1}", DEFAULT_FOLDER, DEFAULT_FILENAME);
14            public SerializationReader() : this(DEFAULT_PATH) { }
15            protected SerializationReader(string filename) { FileName = filename; CreateReader(); }
16    
17    
18            #region ISerializationResultCount members
19            public int ResultCount { get; protected set; }
20            #endregion
21            private FileStream fileStream;
22            protected BinaryReader binReader;
23            protected string FileName { get; private set; }
24            private void CreateReader()
25            {
26                fileStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
27                binReader = new BinaryReader(fileStream);
28            }
29                #region IDisposable Support
30            // Track whether Dispose has been called.
31            private bool disposed = false;
32            // Implement IDisposable.
33            // Do not make this method virtual.
34            // A derived class should not be able to override this method.
35            public void Dispose()
36            {
37                Dispose(true);
38                // This object will be cleaned up by the Dispose method.
39                // Therefore, you should call GC.SupressFinalize to
40                // take this object off the finalization queue
41                // and prevent finalization code for this object
42                // from executing a second time.
43                GC.SuppressFinalize(this);
44            }
45            // Dispose(bool disposing) executes in two distinct scenarios.
46            // If disposing equals true, the method has been called directly
47            // or indirectly by a user's code. Managed and unmanaged resources
48            // can be disposed.
49            // If disposing equals false, the method has been called by the
50            // runtime from inside the finalizer and you should not reference
51            // other objects. Only unmanaged resources can be disposed.
52            protected virtual void Dispose(bool disposing)
53            {
54                // Check to see if Dispose has already been called.
55                if (!this.disposed)
56                {
57                    // If disposing equals true, dispose all managed
58                    // and unmanaged resources.
59                    if (disposing)
60                    {
61                        // Dispose managed resources.
62                        //component.Dispose();
63                    }
64    
65                    // Call the appropriate methods to clean up
66                    // unmanaged resources here.
67                    // If disposing is false,
68                    // only the following code is executed.
69                  
70                    // clean up any resources
71                    binReader.Close();
72                    binReader = null;
73                    fileStream = null;                
74                    // Note disposing has been done.
75                    disposed = true;
76    
77                }
78            }
79            // Use C# destructor syntax for finalization code.
80            // This destructor will run only if the Dispose method
81            // does not get called.
82            // It gives your base class the opportunity to finalize.
83            // Do not provide destructors in types derived from this class.
84            ~SerializationReader()
85            {
86                // Do not re-create Dispose clean-up code here.
87                // Calling Dispose(false) is optimal in terms of
88                // readability and maintainability.
89                Dispose(false);
90            }
91            #endregion
92      }      }
93  }  }

Legend:
Removed from v.401  
changed lines
  Added in v.402

  ViewVC Help
Powered by ViewVC 1.1.22