Beispiel #1
0
        // <summary>
        /// Probes a volume, creates the appropriate VolumeScanner and returns a general interface to it.
        /// </summary>
        /// <param name="drive">Drive to be scanned</param>
        /// <param name="database">VolumeDatabase object</param>
        /// <param name="options">ScannerOptions for all possible scanners</param>
        /// <returns>Interface to the proper VolumeScanner</returns>
        public static IVolumeScanner GetScannerForVolume(PlatformIO.DriveInfo drive,
                                                         VolumeDatabase database,
                                                         ScannerOptions[] options)
        {
            if (drive == null)
            {
                throw new ArgumentNullException("drive");
            }

            if (!drive.IsReady)
            {
                throw new ArgumentException("Drive is not ready", "drive");
            }

            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            IVolumeScanner    scanner = null;
            VolumeProbeResult result  = ProbeVolume(drive);

            switch (result)
            {
            case VolumeProbeResult.Filesystem:
                scanner = new FilesystemVolumeScanner(drive,
                                                      database,
                                                      GetOptions <FilesystemScannerOptions>(options));
                break;

            case VolumeProbeResult.AudioCd:
                scanner = new AudioCdVolumeScanner(drive,
                                                   database,
                                                   GetOptions <AudioCdScannerOptions>(options));
                break;

            case VolumeProbeResult.Unknown:
                throw new ArgumentException("Volume is of an unknown type");

            default:
                throw new NotImplementedException(string.Format("VolumeProbeResult {0} is not implemented", result.ToString()));
            }

            return(scanner);
        }
 public SymLinkHelper(FilesystemVolumeScanner scanner)
 {
     this.scanner      = scanner;
     this.files        = new Dictionary <string, long>();
     this.symLinkItems = new List <SymLinkItem>();
 }