Beispiel #1
0
 private void CallAddNewRecording(RecorderCallbackServiceAgent callbackAgent, DateTime actualStartTimeUtc)
 {
     WriteLog("RecordingThread [{0}]: Calling AddNewRecording()", _recordingProgram.CreateProgramTitle());
     try
     {
         callbackAgent.AddNewRecording(_recordingProgram, actualStartTimeUtc, this.RecordingFileName);
     }
     catch (Exception ex)
     {
         WriteLog(TraceEventType.Error, "RecordingThread [{0}]: {1}", _recordingProgram.CreateProgramTitle(), ex.Message);
     }
 }
        /// <summary>
        /// Startet die Aufzeichnung, sobald dies möglich ist.
        /// </summary>
        /// <returns>Gesetzt, wenn weitere asynchrone Operationen notwendig sind.</returns>
        private bool Start()
        {
            // Pnly if we are not already done
            if (DateTime.UtcNow < CurrentEndTime)
            {
                // Try to allocate the device
                m_streamIdentifier = m_device.Start( m_sources, m_recordingPath );

                // Not possible
                if (!m_streamIdentifier.HasValue)
                {
                    // Fast retest
                    NextTime = DateTime.UtcNow.AddSeconds( 1 );

                    // Again
                    return true;
                }

                // Check recording
                if (DateTime.UtcNow > m_program.StartTimeUtc)
                    m_incomplete = true;

                // Be safe
                try
                {
                    // Report to scheduler
                    using (var sink = new RecorderCallbackServiceAgent( m_schedulerHost, m_schedulerPort ))
                        sink.AddNewRecording( m_program, DateTime.UtcNow, m_recordingPath );
                }
                catch (Exception)
                {
                    // Release device
                    ReleaseDevice();

                    // Forward
                    throw;
                }
            }

            // Prepare next step
            m_run = Finish;

            // When we should go for it
            NextTime = CurrentEndTime;

            // If we are overdue just start immediately
            return (NextTime <= DateTime.UtcNow) ? Run() : true;
        }
 private void CallAddNewRecording(RecorderCallbackServiceAgent callbackAgent, DateTime actualStartTimeUtc)
 {
     WriteLog("RecordingThread [{0}]: Calling AddNewRecording()", _recordingProgram.CreateProgramTitle());
     try
     {
         callbackAgent.AddNewRecording(_recordingProgram, actualStartTimeUtc, this.RecordingFileName);
     }
     catch (Exception ex)
     {
         WriteLog(TraceEventType.Error, "RecordingThread [{0}]: {1}", _recordingProgram.CreateProgramTitle(), ex.Message);
     }
 }