mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-22 05:30:46 +02:00
retry failed recordings
This commit is contained in:
parent
19796847d8
commit
1ddee6724a
|
@ -463,13 +463,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
|
|
||||||
async void _timerProvider_TimerFired(object sender, GenericEventArgs<TimerInfo> e)
|
async void _timerProvider_TimerFired(object sender, GenericEventArgs<TimerInfo> e)
|
||||||
{
|
{
|
||||||
|
var timer = e.Argument;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var cancellationTokenSource = new CancellationTokenSource();
|
var cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
|
||||||
if (_activeRecordings.TryAdd(e.Argument.Id, cancellationTokenSource))
|
if (_activeRecordings.TryAdd(timer.Id, cancellationTokenSource))
|
||||||
{
|
{
|
||||||
await RecordStream(e.Argument, cancellationTokenSource.Token).ConfigureAwait(false);
|
await RecordStream(timer, cancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException)
|
catch (OperationCanceledException)
|
||||||
|
@ -479,6 +481,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.ErrorException("Error recording stream", ex);
|
_logger.ErrorException("Error recording stream", ex);
|
||||||
|
|
||||||
|
const int retryIntervalSeconds = 60;
|
||||||
|
_logger.Debug("Retrying recording in {0} seconds.", retryIntervalSeconds);
|
||||||
|
|
||||||
|
_timerProvider.StartTimer(timer, TimeSpan.FromSeconds(retryIntervalSeconds));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,12 +44,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
public override void Delete(TimerInfo item)
|
public override void Delete(TimerInfo item)
|
||||||
{
|
{
|
||||||
base.Delete(item);
|
base.Delete(item);
|
||||||
|
StopTimer(item);
|
||||||
Timer timer;
|
|
||||||
if (_timers.TryRemove(item.Id, out timer))
|
|
||||||
{
|
|
||||||
timer.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(TimerInfo item)
|
public override void Update(TimerInfo item)
|
||||||
|
@ -104,9 +99,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var timespan = startDate - now;
|
var timerLength = startDate - now;
|
||||||
|
StartTimer(item, timerLength);
|
||||||
|
}
|
||||||
|
|
||||||
var timer = new Timer(TimerCallback, item.Id, timespan, TimeSpan.Zero);
|
public void StartTimer(TimerInfo item, TimeSpan length)
|
||||||
|
{
|
||||||
|
StopTimer(item);
|
||||||
|
|
||||||
|
var timer = new Timer(TimerCallback, item.Id, length, TimeSpan.Zero);
|
||||||
|
|
||||||
if (!_timers.TryAdd(item.Id, timer))
|
if (!_timers.TryAdd(item.Id, timer))
|
||||||
{
|
{
|
||||||
|
@ -114,6 +115,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void StopTimer(TimerInfo item)
|
||||||
|
{
|
||||||
|
Timer timer;
|
||||||
|
if (_timers.TryRemove(item.Id, out timer))
|
||||||
|
{
|
||||||
|
timer.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void TimerCallback(object state)
|
private void TimerCallback(object state)
|
||||||
{
|
{
|
||||||
var timerId = (string)state;
|
var timerId = (string)state;
|
||||||
|
|
Loading…
Reference in a new issue