static void comm_GotStartPublishMessage(object sender, WatchdogMessageEventArgs <StartPublishMessage> e) { if (e.msg.machineName == null || e.msg.machineName.Equals(WatchdogComm.GetMachineName()) == false) { return; //not for us } Trace.WriteLine("Got Publish Start Command for: " + e.msg.publishName + " from " + e.msg.senderName); StartPublish(e.msg.publishName); }
static void SendStatusMessage() { WatchdogStatusMessage msg = new WatchdogStatusMessage(WatchdogComm.GetMachineName(), "", "No Publish Active", WatchdogStatusMessage.StatusLevel.NotRunning, Publish.GetAllPublishNames(pubRoot)); if (curPublish == null) { msg.curPublishName = ""; msg.statusText = "No Publish Active"; msg.statusLevel = WatchdogStatusMessage.StatusLevel.NotRunning; } else { msg.curPublishName = curPublish.name; if (curPublish.IsCommandRunning()) { if (curPublish.watchdogAutoRestart) { msg.statusText = "Running. (WD)"; } else { msg.statusText = "Running."; } } else { msg.statusText = "Stopped."; } if (curPublish.IsCommandRunning()) { msg.statusLevel = WatchdogStatusMessage.StatusLevel.Running; } else { msg.statusLevel = WatchdogStatusMessage.StatusLevel.Error; } } comm.SendMessage(msg); }
static void curPublish_WatchdogReset(object sender, EventArgs e) { comm.SendMessage <StartStopPublishMessageReply>(new StartStopPublishMessageReply(WatchdogComm.GetMachineName(), curPublish.name, false, "WARNING: Watchdog reset publish: " + curPublish.name + " @ " + curPublish.lastWatchdogIntervention.ToString())); }
static void StartPublish(string name) { //if we had an old publish, kill it. if (curPublish != null) { curPublish.Stop(); curPublish.Dispose(); } try { curPublish = Publish.Load(name, pubRoot); } catch (Exception ex) { comm.SendMessage <StartStopPublishMessageReply>(new StartStopPublishMessageReply(WatchdogComm.GetMachineName(), name, false, "Exception Loading Publish" + ex.Message)); return; } PublishRunStatus status = new PublishRunStatus("Unknown Publish Error", false); try { status = curPublish.Start(pubRoot); } catch (Exception ex) { Trace.WriteLine("Exception Starting! " + ex.Message); comm.SendMessage <StartStopPublishMessageReply>(new StartStopPublishMessageReply(WatchdogComm.GetMachineName(), name, false, "Exception Loading Publish" + ex.Message)); return; } Trace.WriteLine("Pub Status: " + status.text); curPublish.WatchdogReset += new EventHandler(curPublish_WatchdogReset); comm.SendMessage <StartStopPublishMessageReply>(new StartStopPublishMessageReply(WatchdogComm.GetMachineName(), curPublish.name, status.ok, status.text)); }
static void comm_GotStopPublishMessage(object sender, WatchdogMessageEventArgs <StopPublishMessage> e) { if (curPublish == null) { return; } if (e.msg.publishName.ToLower() != curPublish.name.ToLower()) { return; } try { curPublish.Stop(); } catch (Exception ex) { Trace.WriteLine("Exception Stopping! " + ex.Message); comm.SendMessage <StartStopPublishMessageReply>(new StartStopPublishMessageReply(WatchdogComm.GetMachineName(), e.msg.publishName, false, "Exception Stopping Publish" + ex.Message)); } curPublish.WatchdogReset -= new EventHandler(curPublish_WatchdogReset); }
public static void KillApp() { traceText.Flush(); try { if (curPublish != null) { curPublish.Stop(); } } catch (Exception ex) { if (curPublish != null) { comm.SendMessage <StartStopPublishMessageReply>(new StartStopPublishMessageReply(WatchdogComm.GetMachineName(), curPublish.name, false, "Exception Stopping Publish" + ex.Message)); } Trace.WriteLine("Exception Stopping! " + ex.Message); } running = false; Thread.Sleep(3000); traceText.Flush(); //Process.GetCurrentProcess().Kill(); }
static void comm_GotCommandMessage(object sender, WatchdogMessageEventArgs <CommandMessage> e) { if (!((e.msg.machineName.ToLower() == WatchdogComm.GetMachineName().ToLower()) || (e.msg.machineName == CommandMessage.ALLMACHINES))) { return; } Trace.WriteLine("Executing Command: " + e.msg.command.ToString()); switch (e.msg.command) { case CommandMessage.WatchdogCommand.AddServiceRight: LocalSecurityPolicyManager.SetRight("labuser", LocalSecurityPolicyManager.ServiceRight); break; case CommandMessage.WatchdogCommand.EnableWatchdogAutoReset: if (curPublish != null) { curPublish.watchdogAutoRestart = true; curPublish.Save(pubRoot); } break; case CommandMessage.WatchdogCommand.DisableWatchdogAutoReset: if (curPublish != null) { curPublish.watchdogAutoRestart = false; curPublish.Save(pubRoot); } break; case CommandMessage.WatchdogCommand.Quit: KillApp(); break; case CommandMessage.WatchdogCommand.StartRemoteDebugger: try { Process[] p = Process.GetProcessesByName("msvsmon"); Trace.WriteLine("MSVSMONS : " + p.Length); if (p.Length > 0) { foreach (Process mon in p) { mon.Kill(); } } Trace.WriteLine("Starting : " + pubRoot + "\\deployment\\debugger.bat"); ProcessStartInfo pi = new ProcessStartInfo(pubRoot + "\\deployment\\debugger.bat"); pi.WorkingDirectory = pubRoot + "\\deployment"; Process.Start(pi); } catch { } break; case CommandMessage.WatchdogCommand.RefreshPublishes: SendStatusMessage(); break; case CommandMessage.WatchdogCommand.AutoDetectRunningPublish: if (curPublish == null) { Publish autoP = AutodetectActivePublish(); if (autoP != null) { StartPublish(autoP.name); } } break; } }