Esempio n. 1
0
        async public Task <RecStatus> GetStatusUpdate()
        {
            RecStatus recStatus = new RecStatus();
            MS_Status msStatus  = new MS_Status();

            recStatus.ErrorMsg = await DoRequest(msStatus);

            if (string.IsNullOrEmpty(recStatus.ErrorMsg) == false)
            {
                recStatus.Status   = RecStatus.eRecording.Error;
                recStatus.WaitTime = NextPollOnError;
                return(recStatus);
            }
            recStatus.NextRecording = msStatus.NextTimer;
            if (msStatus.ActiveRecordings)
            {
                if (actualRecording == false)
                {
                    // new recording detected
                    recStatus.Status   = RecStatus.eRecording.Started;
                    recStatus.WaitTime = NextPollOnRecording;
                    actualRecording    = true;
                    return(recStatus);
                }
                else
                {
                    // on going recording
                    recStatus.Status   = RecStatus.eRecording.Recording;
                    recStatus.WaitTime = NextPollOnWaiting;
                    return(recStatus);
                }
            }
            // no ActiveRecordings
            recStatus.Status   = RecStatus.eRecording.None;
            recStatus.WaitTime = NextPollOnWaiting;
            if (actualRecording == true)
            {
                // recording has ended
                recStatus.Status = RecStatus.eRecording.Stopped;
                actualRecording  = false;
            }
            if (msStatus.ActiveTimers == false)
            {
                // we also have not timers so we have time
                recStatus.WaitTime = NextPollOnWaiting;
                return(recStatus);
            }

            if (msStatus.NextTimer < NextPollOnWaiting)
            {
                recStatus.WaitTime = msStatus.NextTimer + 2;
            }
            return(recStatus);
        }
Esempio n. 2
0
        async public void RunLoop(Action <RecStatus> OnEvent)
        {
            Stop      = false;
            IsRunning = true;
            while (true)
            {
                RecStatus reStat = await GetStatusUpdate();

                OnEvent?.Invoke(reStat);
                if (MySleep(reStat.WaitTime * 1000) == false)
                {
                    IsRunning = false;
                    return;
                }
                //if (Stop) return;
                //System.Threading.Thread.Sleep(reStat.WaitTime * 1000);
            }
        }
Esempio n. 3
0
        private void OnStatusEvent(RecStatus recordingStatus)
        {
            Icon   tmp = Properties.Resources.Button_Blank_Green_icon;
            string msg = string.Empty;
            string cmd = string.Empty;

            switch (recordingStatus.Status)
            {
            case RecStatus.eRecording.Error:
                tmp = Properties.Resources.Button_Blank_Yellow;
                msg = "Error " + recordingStatus.ErrorMsg;
                cmd = Properties.Settings.Default.OnError;
                //if (string.IsNullOrEmpty(Properties.Settings.Default.OnError) == false)
                //    System.Diagnostics.Process.Start(Properties.Settings.Default.OnError+ " \""+ recordingStatus.ErrorMsg+"\"");
                break;

            case RecStatus.eRecording.None:
                tmp = Properties.Resources.Button_Blank_Green_icon;
                msg = "Waiting";
                break;

            case RecStatus.eRecording.Started:
                tmp = Properties.Resources.Button_Blank_Red_icon;
                msg = "Recording";
                cmd = Properties.Settings.Default.OnRecordStart;
                //if (string.IsNullOrEmpty(Properties.Settings.Default.OnRecordStart)==false)
                //    System.Diagnostics.Process.Start(Properties.Settings.Default.OnRecordStart);
                break;

            case RecStatus.eRecording.Stopped:
                tmp = Properties.Resources.Button_Blank_Green_icon;
                msg = "Recording";
                cmd = Properties.Settings.Default.OnRecordEnd;
                //if (string.IsNullOrEmpty(Properties.Settings.Default.OnRecordEnd) == false)
                //    System.Diagnostics.Process.Start(Properties.Settings.Default.OnRecordEnd);
                break;

            case RecStatus.eRecording.Recording:
                tmp = Properties.Resources.Button_Blank_Red_icon;
                msg = "Recording";
                break;
            }
            this.Invoke(new MethodInvoker(() => {
                this.Icon       = tmp;
                statusIcon.Icon = tmp;
                if (string.IsNullOrEmpty(cmd) == false)
                {
                    // CreateObject("Wscript.Shell").Run "C:\Home\bin\Syncthing\Synthing_Start.bat", 0, False
                    //System.Diagnostics.Process.Start($"{cmd.Trim()} {DateTime.Now} msg");
                    System.Diagnostics.Process.Start(cmd);
                }
            }));
            string line = $"{string.Join(",",DateTime.Now,msService.Server,msg)}{System.Environment.NewLine}";

            this.Invoke(new MethodInvoker(() => {
                textBox1.AppendText(line);
            }));
            if (string.IsNullOrEmpty(Properties.Settings.Default.Logfile) == false)
            {
                File.AppendAllText(Properties.Settings.Default.Logfile, line, Encoding.UTF8);
            }
            CutTextBox();
        }