Exemple #1
0
        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();
                    }
                }
            }
        }
Exemple #2
0
 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();
     }
 }
Exemple #3
0
        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;
 }
Exemple #5
0
        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();
                });
            }
        }
Exemple #8
0
        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;
     }
 }
Exemple #10
0
        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();
        }
Exemple #11
0
        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");
            }
        }
Exemple #12
0
        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();
        }
Exemple #13
0
 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");
            }
        }