aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/ApiEntryPoint.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/ApiEntryPoint.cs')
-rw-r--r--MediaBrowser.Api/ApiEntryPoint.cs41
1 files changed, 21 insertions, 20 deletions
diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs
index 588236a39..8f5b5eaaf 100644
--- a/MediaBrowser.Api/ApiEntryPoint.cs
+++ b/MediaBrowser.Api/ApiEntryPoint.cs
@@ -16,9 +16,10 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.IO;
-using MediaBrowser.Controller.IO;
+using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Threading;
namespace MediaBrowser.Api
{
@@ -46,6 +47,8 @@ namespace MediaBrowser.Api
private readonly ISessionManager _sessionManager;
private readonly IFileSystem _fileSystem;
private readonly IMediaSourceManager _mediaSourceManager;
+ public readonly ITimerFactory TimerFactory;
+ public readonly IProcessFactory ProcessFactory;
/// <summary>
/// The active transcoding jobs
@@ -63,13 +66,15 @@ namespace MediaBrowser.Api
/// <param name="config">The configuration.</param>
/// <param name="fileSystem">The file system.</param>
/// <param name="mediaSourceManager">The media source manager.</param>
- public ApiEntryPoint(ILogger logger, ISessionManager sessionManager, IServerConfigurationManager config, IFileSystem fileSystem, IMediaSourceManager mediaSourceManager)
+ public ApiEntryPoint(ILogger logger, ISessionManager sessionManager, IServerConfigurationManager config, IFileSystem fileSystem, IMediaSourceManager mediaSourceManager, ITimerFactory timerFactory, IProcessFactory processFactory)
{
Logger = logger;
_sessionManager = sessionManager;
_config = config;
_fileSystem = fileSystem;
_mediaSourceManager = mediaSourceManager;
+ TimerFactory = timerFactory;
+ ProcessFactory = processFactory;
Instance = this;
_sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress;
@@ -116,7 +121,7 @@ namespace MediaBrowser.Api
{
DeleteEncodedMediaCache();
}
- catch (DirectoryNotFoundException)
+ catch (FileNotFoundException)
{
// Don't clutter the log
}
@@ -168,7 +173,8 @@ namespace MediaBrowser.Api
// Try to allow for some time to kill the ffmpeg processes and delete the partial stream files
if (jobCount > 0)
{
- Thread.Sleep(1000);
+ var task = Task.Delay(1000);
+ Task.WaitAll(task);
}
}
@@ -190,14 +196,14 @@ namespace MediaBrowser.Api
string liveStreamId,
string transcodingJobId,
TranscodingJobType type,
- Process process,
+ IProcess process,
string deviceId,
StreamState state,
CancellationTokenSource cancellationTokenSource)
{
lock (_activeTranscodingJobs)
{
- var job = new TranscodingJob(Logger)
+ var job = new TranscodingJob(Logger, TimerFactory)
{
Type = type,
Path = path,
@@ -600,10 +606,6 @@ namespace MediaBrowser.Api
DeleteHlsPartialStreamFiles(path);
}
}
- catch (DirectoryNotFoundException)
- {
-
- }
catch (FileNotFoundException)
{
@@ -651,10 +653,6 @@ namespace MediaBrowser.Api
//Logger.Debug("Deleting HLS file {0}", file);
_fileSystem.DeleteFile(file);
}
- catch (DirectoryNotFoundException)
- {
-
- }
catch (FileNotFoundException)
{
@@ -706,7 +704,7 @@ namespace MediaBrowser.Api
/// Gets or sets the process.
/// </summary>
/// <value>The process.</value>
- public Process Process { get; set; }
+ public IProcess Process { get; set; }
public ILogger Logger { get; private set; }
/// <summary>
/// Gets or sets the active request count.
@@ -717,7 +715,9 @@ namespace MediaBrowser.Api
/// Gets or sets the kill timer.
/// </summary>
/// <value>The kill timer.</value>
- private Timer KillTimer { get; set; }
+ private ITimer KillTimer { get; set; }
+
+ private readonly ITimerFactory _timerFactory;
public string DeviceId { get; set; }
@@ -747,9 +747,10 @@ namespace MediaBrowser.Api
public DateTime LastPingDate { get; set; }
public int PingTimeout { get; set; }
- public TranscodingJob(ILogger logger)
+ public TranscodingJob(ILogger logger, ITimerFactory timerFactory)
{
Logger = logger;
+ _timerFactory = timerFactory;
}
public void StopKillTimer()
@@ -775,12 +776,12 @@ namespace MediaBrowser.Api
}
}
- public void StartKillTimer(TimerCallback callback)
+ public void StartKillTimer(Action<object> callback)
{
StartKillTimer(callback, PingTimeout);
}
- public void StartKillTimer(TimerCallback callback, int intervalMs)
+ public void StartKillTimer(Action<object> callback, int intervalMs)
{
if (HasExited)
{
@@ -792,7 +793,7 @@ namespace MediaBrowser.Api
if (KillTimer == null)
{
//Logger.Debug("Starting kill timer at {0}ms. JobId {1} PlaySessionId {2}", intervalMs, Id, PlaySessionId);
- KillTimer = new Timer(callback, this, intervalMs, Timeout.Infinite);
+ KillTimer = _timerFactory.Create(callback, this, intervalMs, Timeout.Infinite);
}
else
{