ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater/Serialization/SearchResultWriter.cs
(Generate patch)

Comparing trunk/RomCheater/Serialization/SearchResultWriter.cs (file contents):
Revision 444 by william, Sun Jun 2 18:56:41 2013 UTC vs.
Revision 445 by william, Sun Jun 2 19:21:16 2013 UTC

# Line 24 | Line 24 | namespace RomCheater.Serialization
24          #region ISearchResultWriter members
25          public void WriteResult<TValue>(uint address, TValue value) where TValue : IConvertible
26          {
27 +            try
28 +            {
29 +                Type t = typeof(TValue);
30  
31 <            Type t = typeof(TValue);
32 <
33 <            binWriter.Write(address);
34 <            switch (t.Name.ToLower())
31 >                binWriter.Write(address);
32 >                switch (t.Name.ToLower())
33 >                {
34 >                    case "byte":
35 >                        binWriter.Write(Convert.ToByte(value));
36 >                        break;
37 >                    case "sbyte":
38 >                        binWriter.Write(Convert.ToSByte(value));
39 >                        break;
40 >                    case "uint16":
41 >                        binWriter.Write(Convert.ToUInt16(value));
42 >                        break;
43 >                    case "int16":
44 >                        binWriter.Write(Convert.ToInt16(value));
45 >                        break;
46 >                    case "uint32":
47 >                        binWriter.Write(Convert.ToUInt32(value));
48 >                        break;
49 >                    case "int32":
50 >                        binWriter.Write(Convert.ToInt32(value));
51 >                        break;
52 >                    case "uint64":
53 >                        binWriter.Write(Convert.ToUInt64(value));
54 >                        break;
55 >                    case "int64":
56 >                        binWriter.Write(Convert.ToInt64(value));
57 >                        break;
58 >                }
59 >                ResultsWritten++;
60 >            }
61 >            catch (Exception ex)
62              {
63 <                case "byte":
34 <                    binWriter.Write(Convert.ToByte(value));
35 <                    break;
36 <                case "sbyte":
37 <                    binWriter.Write(Convert.ToSByte(value));
38 <                    break;
39 <                case "uint16":
40 <                    binWriter.Write(Convert.ToUInt16(value));
41 <                    break;
42 <                case "int16":
43 <                    binWriter.Write(Convert.ToInt16(value));
44 <                    break;
45 <                case "uint32":
46 <                    binWriter.Write(Convert.ToUInt32(value));
47 <                    break;
48 <                case "int32":
49 <                    binWriter.Write(Convert.ToInt32(value));
50 <                    break;
51 <                case "uint64":
52 <                    binWriter.Write(Convert.ToUInt64(value));
53 <                    break;
54 <                case "int64":
55 <                    binWriter.Write(Convert.ToInt64(value));
56 <                    break;
63 >                throw ex;
64              }
58            ResultsWritten++;
65          }
66          #endregion
67  
68          private void WriteHeader(Guid guid)
69          {
70 <            // write magic: SRD
65 <            binWriter.Write(Encoding.UTF8.GetBytes("SRD"));
66 <
67 <            if (guid == Guid.Empty)
70 >            try
71              {
72 <                binWriter.Write((int)1);
72 >                // write magic: SRD
73 >                binWriter.Write(Encoding.UTF8.GetBytes("SRD"));
74 >
75 >                if (guid == Guid.Empty)
76 >                {
77 >                    binWriter.Write((int)1);
78 >                }
79 >                else
80 >                {
81 >                    binWriter.Write((int)2);
82 >                    // related guid - length
83 >                    binWriter.Write(guid.ToByteArray().Length);
84 >                    // related guid - data
85 >                    binWriter.Write(guid.ToByteArray());
86 >                }
87 >                // write count (int)
88 >                binWriter.Write(ResultCount);
89              }
90 <            else
90 >            catch (Exception ex)
91              {
92 <                binWriter.Write((int)2);
93 <                // related guid - length
75 <                binWriter.Write(guid.ToByteArray().Length);
76 <                // related guid - data
77 <                binWriter.Write(guid.ToByteArray());
78 <            }            
79 <            // write count (int)
80 <            binWriter.Write(ResultCount);
92 >                throw ex;
93 >            }
94          }
95  
96          protected override void Dispose(bool disposing)
97 <        {            
98 <            base.Dispose(disposing);
99 <            // ensure ResultCount and ResultsWritten are equal            
100 <            if (ResultCount != ResultsWritten)
101 <            {
102 <                string message = string.Format("ResultCount does not match ResultsWritten: 0x{0:x8} != 0x{1:x8} -- offset: 0x{2:x8}", ResultCount, ResultsWritten, ResultCount - ResultsWritten);
103 <                Logging.logger.Error.WriteLine(message);
104 <                throw new InvalidOperationException(message);
97 >        {
98 >            try
99 >            {
100 >                base.Dispose(disposing);
101 >                // ensure ResultCount and ResultsWritten are equal            
102 >                if (ResultCount != ResultsWritten)
103 >                {
104 >                    string message = string.Format("ResultCount does not match ResultsWritten: 0x{0:x8} != 0x{1:x8} -- offset: 0x{2:x8}", ResultCount, ResultsWritten, ResultCount - ResultsWritten);
105 >                    Logging.logger.Error.WriteLine(message);
106 >                    throw new InvalidOperationException(message);
107 >                }
108 >            }
109 >            catch (Exception ex)
110 >            {
111 >                throw ex;
112              }
113          }
114      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines