diff options
Diffstat (limited to 'MediaBrowser.IsoMounter/PismoMount.cs')
| -rw-r--r-- | MediaBrowser.IsoMounter/PismoMount.cs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/MediaBrowser.IsoMounter/PismoMount.cs b/MediaBrowser.IsoMounter/PismoMount.cs new file mode 100644 index 000000000..1e3dbb881 --- /dev/null +++ b/MediaBrowser.IsoMounter/PismoMount.cs @@ -0,0 +1,92 @@ +using MediaBrowser.Common.IO; +using MediaBrowser.Common.Logging; +using MediaBrowser.Model.Logging; +using System; + +namespace MediaBrowser.IsoMounter +{ + /// <summary> + /// Class IsoMount + /// </summary> + internal class PismoMount : IIsoMount + { + /// <summary> + /// The logger + /// </summary> + private static readonly ILogger Logger = LogManager.GetLogger("IsoMount"); + + /// <summary> + /// Gets or sets the iso path. + /// </summary> + /// <value>The iso path.</value> + public string IsoPath { get; internal set; } + + /// <summary> + /// Gets the mounted path. + /// </summary> + /// <value>The mounted path.</value> + public string MountedPath { get; internal set; } + + /// <summary> + /// The PFM file mount + /// </summary> + private PfmFileMount _pfmFileMount; + + /// <summary> + /// The _iso manager + /// </summary> + private readonly PismoIsoManager _isoManager; + + /// <summary> + /// Prevents a default instance of the <see cref="PismoMount" /> class from being created. + /// </summary> + /// <param name="mount">The mount.</param> + /// <param name="isoPath">The iso path.</param> + /// <param name="isoManager">The iso manager.</param> + internal PismoMount(PfmFileMount mount, string isoPath, PismoIsoManager isoManager) + { + _pfmFileMount = mount; + IsoPath = isoPath; + _isoManager = isoManager; + + MountedPath = mount.GetMount().GetUncName(); + } + + /// <summary> + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// </summary> + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + /// <summary> + /// Releases unmanaged and - optionally - managed resources. + /// </summary> + /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> + protected virtual void Dispose(bool dispose) + { + UnMount(); + } + + /// <summary> + /// Uns the mount. + /// </summary> + private void UnMount() + { + if (_pfmFileMount != null) + { + Logger.Info("Unmounting {0}", IsoPath); + + _pfmFileMount.Cancel(); + _pfmFileMount.Detach(); + + _isoManager.OnUnmount(this); + + _pfmFileMount.Dispose(); + _pfmFileMount = null; + } + } + } +} |
