blob: 94e92c2a6ae0575efbd66e5aff87cecdf41aa1f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.IO
{
/// <summary>
/// Class IsoManager.
/// </summary>
public class IsoManager : IIsoManager
{
/// <summary>
/// The _mounters.
/// </summary>
private readonly List<IIsoMounter> _mounters = new List<IIsoMounter>();
/// <summary>
/// Mounts the specified iso path.
/// </summary>
/// <param name="isoPath">The iso path.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns><see creaf="IsoMount" />.</returns>
public Task<IIsoMount> Mount(string isoPath, CancellationToken cancellationToken)
{
if (string.IsNullOrEmpty(isoPath))
{
throw new ArgumentNullException(nameof(isoPath));
}
var mounter = _mounters.FirstOrDefault(i => i.CanMount(isoPath));
if (mounter == null)
{
throw new ArgumentException(
string.Format(
CultureInfo.InvariantCulture,
"No mounters are able to mount {0}",
isoPath));
}
return mounter.Mount(isoPath, cancellationToken);
}
/// <summary>
/// Determines whether this instance can mount the specified path.
/// </summary>
/// <param name="path">The path.</param>
/// <returns><c>true</c> if this instance can mount the specified path; otherwise, <c>false</c>.</returns>
public bool CanMount(string path)
{
return _mounters.Any(i => i.CanMount(path));
}
/// <summary>
/// Adds the parts.
/// </summary>
/// <param name="mounters">The mounters.</param>
public void AddParts(IEnumerable<IIsoMounter> mounters)
{
_mounters.AddRange(mounters);
}
}
}
|