private void PrepareProcessPatterns() { if (NumberOfRunningRetos < NumberOfAllowedRetros && QueueList.Count > 0) { RetrospectiveQueueStructure item = null; lock (s_lockObject) { if (NumberOfRunningRetos < NumberOfAllowedRetros && QueueList.Count > 0) { NumberOfRunningRetos++; item = GetQueueHead(); } } if (item == null || item.Session == null) { return; } item.Session.ProcessPatterns(item.UPByte, item.FHRByte); lock (s_lockObject) { if (NumberOfRunningRetos > 0) { NumberOfRunningRetos--; } if (QueueList.Count <= 0) { Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Manager, Retrospective Queue, Prepare Process Patterns", "Stopping QueueTimer"); QueueTimer.Stop(); } } } }
public void StartServer(TaskScheduler scheduler, UserControl control = null) { lock (TasksTimerLock) { if (TasksTimer != null) { return; } TasksTimer = new QueueTimer <CloudItem>(0, 5000, scheduler); TasksTimer.SynchronizingObject = null; if (control == null) { TasksTimer.HasHandle = true; } else { control.HandleCreated += (sender, e) => { TasksTimer.HasHandle = true; }; control.HandleDestroyed += (sender, e) => { TasksTimer.HasHandle = false; }; TasksTimer.HasHandle = control.IsHandleCreated; } TasksTimer.DoWork += queueTimer_DoWork; TasksTimer.Queue.ListChanged += Data_ListChanged; // Enable network monitoring. // Make sure settings are synchronized when connection is available only. NetworkChange.NetworkAvailabilityChanged += NetworkInformation_NetworkAvailabilityChanged; NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged; IsNetworkAvailable = JocysCom.ClassLibrary.Network.NetStatInfo.IsNetworkAvailable(); } }
internal NodeGroup(RelayNodeGroupDefinition groupDefinition, RelayNodeConfig nodeConfig, ForwardingConfig forwardingConfig) { GroupDefinition = groupDefinition; Activated = groupDefinition.Activated; _clusterByRange = groupDefinition.UseIdRanges; _forwardingConfig = forwardingConfig; RelayNodeClusterDefinition myClusterDefinition = NodeManager.Instance.GetMyNodeClusterDefinition(); foreach (RelayNodeClusterDefinition clusterDefintion in groupDefinition.RelayNodeClusters) { NodeCluster nodeCluster = new NodeCluster(clusterDefintion, nodeConfig, this, forwardingConfig); if (clusterDefintion == myClusterDefinition) { MyCluster = nodeCluster; } Clusters.Add(nodeCluster); } _nodeReselectTimerCallback = new System.Threading.TimerCallback(NodeReselectTimer_Elapsed); if (_nodeReselectTimer == null) { _nodeReselectTimer = new System.Threading.Timer(_nodeReselectTimerCallback); } _nodeReselectTimer.Change(NodeReselectIntervalMilliseconds, NodeReselectIntervalMilliseconds); QueueTimerCallback = new System.Threading.TimerCallback(QueueTimer_Elapsed); if (QueueTimer == null) { QueueTimer = new System.Threading.Timer(QueueTimerCallback); } QueueTimer.Change(DequeueIntervalMilliseconds, DequeueIntervalMilliseconds); }
public ThumbUserControl() { InitializeComponent(); updateTimer = new QueueTimer(500, 0); updateTimer.DoWork = RefreshBackgroundImage; deadzoneLink = new DeadZoneControlsLink(DeadZoneTrackBar, DeadZoneNumericUpDown, DeadZoneTextBox); deadzoneLink.ValueChanged += deadzoneLink_ValueChanged; antiDeadzoneLink = new DeadZoneControlsLink(AntiDeadZoneTrackBar, AntiDeadZoneNumericUpDown, AntiDeadZoneTextBox); antiDeadzoneLink.ValueChanged += deadzoneLink_ValueChanged; }
private void LinearUserControl_Load(object sender, EventArgs e) { updateTimer = new QueueTimer(500, 0); updateTimer.DoWork += updateTimer_DoWork; var maxValue = TargetType == TargetType.LeftTrigger || TargetType == TargetType.RightTrigger ? byte.MaxValue : short.MaxValue; deadzoneLink = new DeadZoneControlsLink(DeadZoneTrackBar, DeadZoneNumericUpDown, DeadZoneTextBox, maxValue); deadzoneLink.ValueChanged += deadzoneLink_ValueChanged; antiDeadzoneLink = new DeadZoneControlsLink(AntiDeadZoneTrackBar, AntiDeadZoneNumericUpDown, AntiDeadZoneTextBox, maxValue); antiDeadzoneLink.ValueChanged += deadzoneLink_ValueChanged; RefreshBackgroundImageAsync(); }
public void AddToQueue(String buildName) { lock (s_lock) { var item = new BuildElement() { Name = buildName, RequestTime = DateTime.Now }; QueueList.Add(item); if (!QueueTimer.Enabled) { QueueTimer.Start(); } } }
void QueueTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if (QueueList.Count <= 0) { QueueTimer.Stop(); } Console.Out.WriteLine("Buildig = " + Building); if (!Building) { Task.Factory.StartNew(() => { PrepareBuild(); }); } }
void QueueTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Manager, RetrospectiveQueue, Add To Queue", "QueueTimer tick"); if (QueueList.Count <= 0) { QueueTimer.Stop(); } if (NumberOfRunningRetos < NumberOfAllowedRetros) { Task.Factory.StartNew(() => { PrepareProcessPatterns(); }); } }
public void StopServer() { lock (TasksTimerLock) { if (TasksTimer == null) { return; } TasksTimer.Dispose(); TasksTimer = null; // Disable network monitoring. NetworkChange.NetworkAvailabilityChanged -= NetworkInformation_NetworkAvailabilityChanged; NetworkChange.NetworkAddressChanged -= NetworkChange_NetworkAddressChanged; // Monitoring not available. IsNetworkAvailable = false; } }
public AxisMapUserControl() { InitializeComponent(); if (ControlsHelper.IsDesignMode(this)) { return; } InitPaintObjects(); // Initialize in constructor and not on "Load" event or it will reset AntiDeadZone value // inside DeadZoneControlsLink(...). updateTimer = new QueueTimer(500, 0); updateTimer.DoWork += updateTimer_DoWork; var maxValue = TargetType == TargetType.LeftTrigger || TargetType == TargetType.RightTrigger ? byte.MaxValue : short.MaxValue; deadzoneLink = new DeadZoneControlsLink(DeadZoneTrackBar, DeadZoneNumericUpDown, DeadZoneTextBox, maxValue); deadzoneLink.ValueChanged += deadzoneLink_ValueChanged; antiDeadzoneLink = new DeadZoneControlsLink(AntiDeadZoneTrackBar, AntiDeadZoneNumericUpDown, AntiDeadZoneTextBox, maxValue); antiDeadzoneLink.ValueChanged += deadzoneLink_ValueChanged; RefreshBackgroundImageAsync(); }
public void AddToQueue(PatternsSessionData session, byte[] upPByte, byte[] hrByte) { lock (s_lockObject) { var item = new RetrospectiveQueueStructure() { FHRByte = hrByte, UPByte = upPByte, Session = session }; QueueList.Add(item); if (!QueueTimer.Enabled) { QueueTimer.Start(); Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Manager, RetrospectiveQueue, Add To Queue", "QueueTimer started"); } Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Manager, RetrospectiveQueue, Add To Queue", "AddToQueue finished"); } }
public IssuesUserControl() { InitializeComponent(); if (IsDesignMode) { return; } // Set tool strip to the same font. Controls.OfType <ToolStrip>().ToList().ForEach(x => x.Font = this.Font); NoIssuesPanel.Visible = false; LinePanel.Visible = false; ExceptionInfoButton.Visible = false; // List which contains all issues. var scheduler = TaskScheduler.FromCurrentSynchronizationContext(); IssueList = new BindingListInvoked <IssueItem>(); IssueList.AsynchronousInvoke = true; IssueList.SynchronizingObject = scheduler; IssueList.ListChanged += IssueList_ListChanged; UpdateIgnoreAllButton(); // List which is bound to the grid and displays issues, which needs user attention. Warnings = new BindingListInvoked <IssueItem>(); Warnings.SynchronizingObject = scheduler; // Configure data grid. ControlsHelper.ApplyBorderStyle(WarningsDataGridView); WarningsDataGridView.AutoGenerateColumns = false; WarningsDataGridView.DataSource = Warnings; UpdateIgnoreButton(); // Timer which checks for the issues. var ai = new JocysCom.ClassLibrary.Configuration.AssemblyInfo(); var title = ai.GetTitle(true, true, true, true, false) + " - Issues"; Text = title; TasksTimer = new QueueTimer <object>(0, 0); TasksTimer.DoWork += queueTimer_DoWork; TasksTimer.Queue.ListChanged += Data_ListChanged; // Start monitoring tasks queue. QueueMonitorTimer.Start(); }
protected LimitedQuery(QueueTimer queryTimer, int batchSize, string logPath) : base(queryTimer, logPath) { this.batchSize = batchSize; }
public ThumbUserControl() { InitializeComponent(); updateTimer = new QueueTimer(500, 0); updateTimer.DoAction = RefreshBackgroundImage; }
private void PrepareBuild() { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "PrepareBuild starting"); Console.Out.WriteLine("Buildig = " + Building); if (!Building && QueueList.Count > 0) { BuildElement nextBuild = null; lock (s_lock) { if (!Building && QueueList.Count > 0) { Building = true; nextBuild = GetQueueHead(); } else { return; } } if (nextBuild == null || nextBuild.Name.Equals(String.Empty)) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "nextBuild == null || Empty"); return; } //RunBatch var buildName = nextBuild.Name; var de = (from c in BuildManager.Instance.BuildName2Path where c.Key.Equals(buildName) select c).FirstOrDefault(); var path = de.Value; var folder = GetFolder(path); using (Process proc = new Process()) { ProcessStartInfo psi = new ProcessStartInfo(path); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "ProcessStartInfo created"); psi.UseShellExecute = false; psi.WorkingDirectory = folder; psi.RedirectStandardOutput = true; psi.RedirectStandardInput = true; psi.RedirectStandardError = true; psi.ErrorDialog = false; psi.WindowStyle = ProcessWindowStyle.Hidden; //Console.Out.WriteLine("Executing: " + path); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Executing " + path); proc.StartInfo = psi; proc.Start(); System.IO.StreamReader myOutput = proc.StandardOutput; //build.WaitForExit(2000); CurrentBuildingLog = String.Empty; using (StreamWriter wr = new StreamWriter("BuildLog.log")) { while (!proc.HasExited) { string output = myOutput.ReadToEnd(); CurrentBuildingLog += output; //Console.Out.WriteLine(output); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", output); wr.WriteLine(output); } } if (proc.HasExited) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Process exited"); var logStrList = CurrentBuildingLog.Split('\n').ToList(); var buildNum = (from c in logStrList where c.Contains("Build=") select c).FirstOrDefault(); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "got buildNum = " + buildNum); buildNum = buildNum.Remove(0, buildNum.IndexOf("=") + 1).Trim(); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "extracted buildNum = " + buildNum); if (!Directory.Exists(folder + "\\Log")) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Create dir"); Directory.CreateDirectory(folder + "\\Log"); } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "dir exist"); String logfile = folder + "\\Log\\BuildLog" + buildNum + ".log"; using (StreamWriter sw = new StreamWriter(logfile)) { sw.Write(CurrentBuildingLog); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Writing log"); } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Writing log DONE"); bool bSucc = false; if (proc.ExitCode == 0) { bSucc = true; } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Get mail list"); var mailList = File.ReadAllLines(folder + "\\MailList.txt").ToList();; Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Get mail list DONE"); String mailTo = String.Empty; foreach (var item in mailList) { if (item.Equals(String.Empty)) { continue; } if (!mailTo.Equals(String.Empty)) { mailTo += ", "; } mailTo += item; } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Send mail start"); if (mailTo.Equals(String.Empty)) { mailTo = "*****@*****.**"; } using (MailMessage mail = new MailMessage("*****@*****.**", mailTo)) { mail.Subject = buildName + " build " + buildNum + (bSucc ? " Successful" : " Failed"); String body = bSucc ? "New build is available" : "Build Failed"; mail.Body = body; mail.Attachments.Add(new Attachment(logfile)); SmtpClient client = new SmtpClient("notestlv2"); client.UseDefaultCredentials = true; try { client.Send(mail); } catch (Exception ex) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Critical, "BuildRunner BuildRequestsQueue, PrepareBuild", "Send mail failed"); } } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Send mail end"); } try { if (!proc.HasExited) { proc.Kill(); } if (File.Exists("BuildLog.log")) { File.Delete("BuildLog.log"); } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Delete temp log"); } catch (Exception ex) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Critical, "BuildRunner BuildRequestsQueue, PrepareBuild", ex.ToString()); } } lock (s_lock) { Building = false; if (QueueList.Count <= 0) { QueueTimer.Stop(); Console.Out.WriteLine("Queue list empty, timer stopped"); } } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Exit"); } }