public CurrentOutfitFolder COF;
+ private string CrashMarkerFileName
+ {
+ get
+ {
+ return Path.Combine(UserDir, "crash_marker");
+ }
+ }
+
#region Events
#region ClientChanged event
public void Reconnect()
{
+ // We are logging in without exiting the client
+ // Mark last run as successful
+ MarkEndExecution();
TabConsole.DisplayNotificationInChat("Attempting to reconnect...", ChatBufferTextStyle.StatusDarkBlue);
Logger.Log("Attemting to reconnect", Helpers.LogLevel.Info, client);
GridClient oldClient = client;
public void CleanUp()
{
+ MarkEndExecution();
+
if (COF != null)
{
COF.Dispose();
Helpers.LogLevel.Error,
client);
}
+
+ public LastExecStatus GetLastExecStatus()
+ {
+ if (File.Exists(CrashMarkerFileName))
+ {
+ Logger.Log(string.Format("Found crash marker file {0}, reporting unclean shutdown to the grid", CrashMarkerFileName), Helpers.LogLevel.Warning);
+ return LastExecStatus.OtherCrash;
+ }
+ else
+ {
+ Logger.Log(string.Format("No crash marker file {0} found, reporting clean shutdown to the grid", CrashMarkerFileName), Helpers.LogLevel.Info);
+ return LastExecStatus.Normal;
+ }
+ }
+
+ public void MarkStartExecution()
+ {
+ Logger.Log(string.Format("Marking start of execution run, creating file: {0}", CrashMarkerFileName), Helpers.LogLevel.Info);
+ try
+ {
+ File.Create(CrashMarkerFileName).Dispose();
+ }
+ catch { }
+ }
+
+ public void MarkEndExecution()
+ {
+ Logger.Log(string.Format("Marking end of execution run, deleting file: {0}", CrashMarkerFileName), Helpers.LogLevel.Info);
+ try
+ {
+ File.Delete(CrashMarkerFileName);
+ }
+ catch { }
+ }
+
}
#region Event classes
netcom.LoginOptions.Channel = Properties.Resources.ProgramName; // Channel
netcom.LoginOptions.Version = Properties.Resources.RadegastTitle; // Version
netcom.AgreeToTos = cbTOS.Checked;
+ netcom.LoginOptions.LastExecEvent = instance.GetLastExecStatus();
switch (cbxLocation.SelectedIndex)
{
instance.Client.Settings.MULTIPLE_SIMS = true;
}
+ instance.MarkStartExecution();
netcom.Login();
SaveConfig();
}
private void loginToolStripMenuItem_Click(object sender, EventArgs e)
{
+ // We are logging in without exiting the client
+ // Mark last run as successful
+ instance.MarkEndExecution();
TabConsole.InitializeMainTab();
TabConsole.Tabs["login"].Select();
}
// $Id$
//
+using OpenMetaverse;
+
namespace Radegast.Netcom
{
public class LoginOptions
private Grid grid;
private string gridCustomLoginUri = string.Empty;
+ private LastExecStatus lastExecEvent = LastExecStatus.Normal;
+
public LoginOptions()
{
get { return gridCustomLoginUri; }
set { gridCustomLoginUri = value; }
}
+
+ public LastExecStatus LastExecEvent
+ {
+ get { return lastExecEvent; }
+ set { lastExecEvent = value; }
+ }
}
}