228 lines
7.9 KiB
C#
228 lines
7.9 KiB
C#
/******************************************************
|
|
* ROMVault2 is written by Gordon J. *
|
|
* Contact gordon@romvault.com *
|
|
* Copyright 2014 *
|
|
******************************************************/
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.ServiceModel;
|
|
using System.Windows.Forms;
|
|
using ROMVault2.RVRef;
|
|
using ROMVault2.RvDB;
|
|
using ROMVault2.Utils;
|
|
|
|
|
|
namespace ROMVault2
|
|
{
|
|
public static class ReportError
|
|
{
|
|
|
|
public static void UnhandledExceptionHandler(object sender, System.Threading.ThreadExceptionEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
// Create Error Message
|
|
string message = string.Format("An Application Error has occurred.\r\n\r\nEXCEPTION:\r\nSource: {0}\r\nMessage: {1}\r\n", e.Exception.Source, e.Exception.Message);
|
|
if (e.Exception.InnerException != null)
|
|
{
|
|
message += string.Format("\r\nINNER EXCEPTION:\r\nSource: {0}\r\nMessage: {1}\r\n", e.Exception.InnerException.Source, e.Exception.InnerException.Message);
|
|
}
|
|
message += string.Format("\r\nSTACK TRACE:\r\n{0}", e.Exception.StackTrace);
|
|
|
|
SendErrorMessage(message);
|
|
|
|
frmShowError fshow = new frmShowError();
|
|
fshow.settype(message);
|
|
fshow.ShowDialog();
|
|
|
|
Environment.Exit(0);
|
|
}
|
|
catch
|
|
{
|
|
Environment.Exit(0);
|
|
}
|
|
}
|
|
|
|
public static void UnhandledExceptionHandler(Exception e)
|
|
{
|
|
try
|
|
{
|
|
// Create Error Message
|
|
string message = string.Format("An Application Error has occurred.\r\n\r\nEXCEPTION:\r\nSource: {0}\r\nMessage: {1}\r\n", e.Source, e.Message);
|
|
if (e.InnerException != null)
|
|
{
|
|
message += string.Format("\r\nINNER EXCEPTION:\r\nSource: {0}\r\nMessage: {1}\r\n", e.InnerException.Source, e.InnerException.Message);
|
|
}
|
|
message += string.Format("\r\nSTACK TRACE:\r\n{0}", e.StackTrace);
|
|
|
|
SendErrorMessage(message);
|
|
|
|
frmShowError fshow = new frmShowError();
|
|
fshow.settype(message);
|
|
fshow.ShowDialog();
|
|
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
public static void UnhandledExceptionHandler(string e1)
|
|
{
|
|
try
|
|
{
|
|
// Create Error Message
|
|
string message = string.Format("An Application Error has occurred.\r\n\r\nEXCEPTION:\r\nMessage:");
|
|
message += e1 + "\r\n";
|
|
|
|
message += string.Format("\r\nSTACK TRACE:\r\n{0}", Environment.StackTrace);
|
|
|
|
SendErrorMessage(message);
|
|
|
|
frmShowError fshow = new frmShowError();
|
|
fshow.settype(message);
|
|
fshow.ShowDialog();
|
|
|
|
Environment.Exit(0);
|
|
}
|
|
catch
|
|
{
|
|
Environment.Exit(0);
|
|
}
|
|
}
|
|
|
|
|
|
//public static void SendAndShowDat(string message, string filename)
|
|
//{
|
|
// SendErrorMessageDat(message, filename);
|
|
// Show(message, "RomVault - Dat Reading Error");
|
|
//}
|
|
|
|
public static void SendAndShow(string message, string caption = "RomVault", MessageBoxButtons buttons = MessageBoxButtons.OK, MessageBoxIcon icon = MessageBoxIcon.Exclamation)
|
|
{
|
|
SendErrorMessage(message);
|
|
Show(message, caption, buttons, icon);
|
|
}
|
|
|
|
public static void Show(string text, string caption = "RomVault", MessageBoxButtons buttons = MessageBoxButtons.OK, MessageBoxIcon icon = MessageBoxIcon.Exclamation)
|
|
{
|
|
if (Program.SyncCont != null)
|
|
Program.SyncCont.Send(callback => MessageBox.Show(text, caption, buttons, icon), null);
|
|
else
|
|
MessageBox.Show(text, caption, buttons, icon);
|
|
}
|
|
|
|
public static void SendErrorMessage(string message)
|
|
{
|
|
|
|
bool isNetworkAvailable = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
|
|
if (!isNetworkAvailable) return;
|
|
|
|
string st = Environment.StackTrace;
|
|
|
|
BasicHttpBinding b = new BasicHttpBinding { SendTimeout = new TimeSpan(0, 0, 5), ReceiveTimeout = new TimeSpan(0, 0, 5) };
|
|
EndpointAddress e = new EndpointAddress(@"http://services.romvault.com/Service1.svc");
|
|
|
|
Service1Client s = new Service1Client(b, e);
|
|
|
|
try
|
|
{
|
|
s.SendErrorMessage3(Settings.Username, Settings.EMail, Program.Version, Program.SubVersion, message + "\n" + st);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
s.Close();
|
|
}
|
|
|
|
public static void SendErrorMessageDat(string message, string filename)
|
|
{
|
|
bool isNetworkAvailable = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
|
|
if (!isNetworkAvailable) return;
|
|
|
|
BasicHttpBinding b = new BasicHttpBinding { SendTimeout = new TimeSpan(0, 0, 5), ReceiveTimeout = new TimeSpan(0, 0, 5) };
|
|
EndpointAddress e = new EndpointAddress(@"http://services.romvault.com/Service1.svc");
|
|
|
|
Service1Client s = new Service1Client(b, e);
|
|
|
|
try
|
|
{
|
|
s.SendDATErrorMessage3(Settings.Username, Settings.EMail, Program.Version, Program.SubVersion, message, filename);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
s.Close();
|
|
}
|
|
|
|
private static string _logfilename;
|
|
|
|
public static void ReportList(List<RvFile> files)
|
|
{
|
|
if (!Settings.DebugLogsEnabled) return;
|
|
|
|
string dir, now;
|
|
OpenLogFile(out dir, out now);
|
|
dir = Path.Combine(dir, now + " DataBaseLog.txt");
|
|
TextWriter sw = new StreamWriter(dir, false);
|
|
for (int i = 0; i < files.Count; i++)
|
|
{
|
|
RvFile f = files[i];
|
|
f.ReportIndex = i;
|
|
ReportFile(sw, f);
|
|
}
|
|
|
|
sw.Flush();
|
|
sw.Close();
|
|
}
|
|
|
|
private static void OpenLogFile(out string dir, out string now)
|
|
{
|
|
dir = Path.Combine(Application.StartupPath, "Logs");
|
|
if (!Directory.Exists(dir))
|
|
Directory.CreateDirectory(dir);
|
|
|
|
now = DateTime.Now.ToString(CultureInfo.InvariantCulture);
|
|
now = now.Replace("\\", "-");
|
|
now = now.Replace("/", "-");
|
|
now = now.Replace(":", "-");
|
|
|
|
_logfilename = Path.Combine(dir, now + " UpdateLog.txt");
|
|
|
|
}
|
|
|
|
private static void ReportFile(TextWriter sw, RvFile f)
|
|
{
|
|
sw.WriteLine(f.ReportIndex.ToString("D8") + " " + ArrByte.ToString(f.CRC) + " " + f.GotStatus.ToString().PadRight(10) + " " + f.RepStatus.ToString().PadRight(15) + " " + f.TreeFullName);
|
|
}
|
|
|
|
public static void LogOut(string s)
|
|
{
|
|
if (!Settings.DebugLogsEnabled) return;
|
|
|
|
if (_logfilename == null)
|
|
{
|
|
string dir, now;
|
|
OpenLogFile(out dir, out now);
|
|
}
|
|
|
|
StreamWriter sw = new StreamWriter(_logfilename, true);
|
|
sw.WriteLine(s);
|
|
sw.Flush();
|
|
sw.Close();
|
|
|
|
}
|
|
public static void LogOut(RvFile f)
|
|
{
|
|
if (!Settings.DebugLogsEnabled) return;
|
|
|
|
StreamWriter sw = new StreamWriter(_logfilename, true);
|
|
ReportFile(sw, f);
|
|
sw.Flush();
|
|
sw.Close();
|
|
}
|
|
}
|
|
} |